首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET面试题系列 - C# 基础知识(1)

我觉得一个不错的答案是”当这个对象所有的属性都是值类型时,例如刻画N维坐标系上的一个点”。如果面试者是如此作答,那么你可以继续问“可以用类型么?...如果类型对象已经存在,则不会再次调用静态构造函数。 调用类型的实例初始化器,初始化类型的非静态成员。 例如下面的代码中,C#首先将a初始化为5,然后再修改成10。...上的例子  CLR via C#上的这个例子可以让我们透彻理解前一小节的内容以及内存中的各种活动。...可以声明多个不同的构造函数。可以利用this关键字来调用其它构造函数。 1.6.3 实例构造函数(结构) 结构体的构造函数必须初始化它的所有成员。结构的构造函数不会被自动调用。...在程序中,用户无法控制何时执行静态构造函数。 静态构造函数不应该调用基类型的静态构造函数。这是因为类型不可能有静态字段是从基类型分享或继承的。

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则

    《Effective C# Second Edition》一书原本有50条原则,但这50条原则是针对C#语言本身以及.NET来写的,我在阅读过程中,发现是有些原则并不适用于Unity中mono版本的C#...而在静态构造函数中却可以做到。 PS: 此原则对应于《Effective C# Second Edition》中原则13。...原则10 使用构造函数链             (减少重复的初始化逻辑) ● 编写构造函数很多时候是个重复性的劳动,如果你发现多个构造函数包含相同的逻辑,可以将这个逻辑提取到一个通用的构造函数中。...这样既可以避免代码重复,也可以利用构造函数初始化器来生成更高效的目标代码。 ● C#编译器将把构造函数初始化器看做是一种特殊的语法,并移除掉重复的变量初始化器以及重复的基类构造函数调用。...这样使得最终的对象可以执行最少的代码来保证初始化的正确性。 ● 构造函数初始化器允许一个构造函数去调用另一个构造函数。而C# 4.0添加了对默认参数的支持,这个功能也可以用来减少构造函数中的重复代码。

    1.8K30

    苏州同程旅游学长给我的全面的面试知识库

    7、定义构造函数 构造函数是与该类具有相同名称的类中的成员函数。每当创建对象类时,都会自动调用构造函数。它在初始化类时构造数据成员的值。 8、什么是锯齿状阵列? 具有数组类型元素的数组称为锯齿数组。...将对象转换为字节流的过程称为序列化。为了使对象可序列化,它应该实现ISerialize接口。反序列化是从字节流中创建对象的反向过程。 12、我们可以在静态方法中使用“ this”命令吗?...数组列表类似于数组,但是没有固定的大小。 20、可以重写私有虚拟方法吗? 不可以,因为在课外无法访问它们。 21、描述可访问性修饰符“受保护的内部”。...System.StringBuilder设计为具有可变字符串的概念,在其中可以执行各种操作,而无需为修改后的字符串分配单独的内存位置。...委托是必需的,因为它们可用于编写更多通用的类型安全函数。 34、如何在C#中将一个类继承到其他类? 冒号在C#中用作继承运算符。只需放置一个冒号,然后放置类名。

    3K20

    WPF 中如何绑定附加属性?XAML 中记得加括号,C# 中记得不能用字符串

    WPF 中如何绑定附加属性?XAML 中记得加括号,C# 中记得不能用字符串 在 XAML 中写绑定是 WPF 学习的必修课,进阶一点的,是用 C# 代码来写绑定。...例如我只需要在任何一个类中定义 IsDraggable 附加属性,就可以让我其他地方的 Grid Button 等支持拖拽。...,这里并不需要在 Binding 后面写 Path=,因为 Binding 的构造函数中传入的参数就是赋值给 Path 的。...在 C# 代码中绑定附加属性 上面在说明附加属性绑定的时候我特地额外写了一个不需要写命名空间的 XAML 绑定附加属性的代码,这是为了说明接下来写 C# 代码时的注意事项。 是这样写吗?...在 C# 代码中绑定附加属性,需要 使用依赖项属性,而不能使用字符串!

    2.9K10

    Entity Framework Core 2.0 新特性

    : 在生成SQL时,该方法的名称将用作函数的名称(在本例中为用户定义的函数),但在方法注册期间可以覆盖名称和模式 目前只支持标量功能 必须自行在数据库中创建映射函数,EF Core迁移不会对其进行创建...2.性能提升方面 2.1DbContext连接池 在ASP.NET Core程序中我们使用EF Core一般都是将自定义DbContext类型注册到依赖注入系统中,然后通过控制器中的构造函数参数获取该类型的实例...3.3FromSql和ExecuteSqlCommand中的字符串插值 C#6(C#6.0特性请移步:这里)中引入了字符串插值,这是一个允许C#表达式直接嵌入到字符串文字中的功能,提供了一种在运行时构建字符串的好方法...这种新的支持允许以“安全”的方式使用C#字符串插值。这样就可以防止在运行时动态构建SQL时发生的常见SQL注入攻击....,添加更多的数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符的方法,以便可以在LINQ查询中调用它们。

    3.9K90

    c#结构体与类的区别,及使用技巧 C#中的结构体与类的区别

    创建类的对象的时候? 那还用得着构造函数吗? 经常看到一些初学者在类的下面直接写这样代码. ? 但是又有人会说了.诶, 那么为什么在声明类的字段的时候可以赋值呢?赋值表达式也是1个执行代码啊?...从上面的内容,我们可以看出.其实从本质上来说,类和结构的字段都是不能有初始值的.只不过微软在语法上允许我们在定义类的字段的时候为其赋值.但是背后微软其实是把赋值的执行代码放到构造函数中去执行的....首先,关于隐式构造函数.我们知道,在1个类中如果我们没有为类写任意的构造函数,那么C#编译器在编译的时候会自动的为这个类生成1个无参数的构造函数.我们将这个构造函数称之为隐式构造函数 但是一旦我们为这个类写了任意的...关于构造函数当然还不仅仅如此.我们知道在类的构造函数中我们可以写一些任意的代码(前提是符合C#语法啦),在结构体的构造函数中虽然也可以写任意的代码.但是C#语法规定在结构体的构造函数中,必须要为结构体的所有字段赋值...这个错误,仍然提示我们在构造函数中没有为所有的字段赋值,这是很多童鞋遇到的问题,诶,不是要在构造函数中为所有的字段赋值么?我现在赋值了啊。为什么还是提示没有赋值呢?

    1.2K32

    C#中的结构体与类的区别

    创建类的对象的时候? 那还用得着构造函数吗? 经常看到一些初学者在类的下面直接写这样代码. ? 但是又有人会说了.诶, 那么为什么在声明类的字段的时候可以赋值呢?赋值表达式也是1个执行代码啊?...从上面的内容,我们可以看出.其实从本质上来说,类和结构的字段都是不能有初始值的.只不过微软在语法上允许我们在定义类的字段的时候为其赋值.但是背后微软其实是把赋值的执行代码放到构造函数中去执行的....首先,关于隐式构造函数.我们知道,在1个类中如果我们没有为类写任意的构造函数,那么C#编译器在编译的时候会自动的为这个类生成1个无参数的构造函数.我们将这个构造函数称之为隐式构造函数 但是一旦我们为这个类写了任意的...关于构造函数当然还不仅仅如此.我们知道在类的构造函数中我们可以写一些任意的代码(前提是符合C#语法啦),在结构体的构造函数中虽然也可以写任意的代码.但是C#语法规定在结构体的构造函数中,必须要为结构体的所有字段赋值...这个错误,仍然提示我们在构造函数中没有为所有的字段赋值,这是很多童鞋遇到的问题,诶,不是要在构造函数中为所有的字段赋值么?我现在赋值了啊。为什么还是提示没有赋值呢?

    1.5K31

    【分类战车SVM】第五话:核函数(哦,这实在太神奇了!)

    那么高维空间到底是什么样的? 有人说高位空间里其实只有数学意义,在实际中无意义,是这样的吗? 又有人说高维空间里其实有更高级的生物,他们看我们,就像我们看在一个平面进行爬行的虫子一样。...更神奇的是,我们不仅要把一个无解的低维问题映射到高维去寻找办法,还可以用“核函数”这个东西,把解决办法再转到低维去处理。 ? 哦~~这实在太神奇了!...核函数——在低维时空里解决 核函数是干嘛的呢? 在计算的时候,它可以让x和z不用通过H()映射到高维空间再计算内积,而是直接在低维空间里计算了。...我们用K()表示核函数,那么核函数作用就是: K(x,z)= 避开了X映射到H(X),Y映射到H(Y)这么一个过程。 有这么神吗?有的,给你举个例子就知道了: ?...在这个例子中,核函数在低维计算的结果完全等价于原问题:两个变量高维映射后的内积。这么一来,就避开了直接在高维空间中进行计算。那么问题来了,这个核函数是固定的吗?

    799120

    .NET基础面试题整理

    类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样 3.内部结构: 结构:没有默认的构造函数,...但是可以添加构造函数没有析构函数没有 abstract 和 sealed(因为不能继承)不能有protected 修饰符可以不使用new 初始化在结构中初始化实例字段是错误的 类:有默认的构造函数 有析构函数...我们可以把栈想象成一个接着一个叠放在一起的盒子。当我们使用的时候,每次从最顶部取走一个盒子。...作用:为了促进代码的重用,尤其是算法的重用 优势:(1)可重用性(2)类型安全,在参数化的类中只有成员明确希望的数据类型才可以使用(3)性能:避免了从Object的强制转换和值类型的装箱(4)减小了内存消耗...委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的指针。 匿名方法:就是没有实际方法声明的委托实例。或者说,它们的定义是直接内嵌在代码中的。

    1.6K21

    【陆勤践行】SVM之核函数

    前段时间热映的《星际穿越》想必大家都看过,在这部烧脑大片中,主角库珀进入到了高维度空间,在那里,时间这个维度变成实体存在,人们可以像散步一样沿着时间这个维度来回穿梭。 那么高维空间到底是什么样的?...有人说高位空间里其实只有数学意义,在实际中无意义,是这样的吗? 又有人说高维空间里其实有更高级的生物,他们看我们,就像我们看在一个平面进行爬行的虫子一样。...更神奇的是,我们不仅要把一个无解的低维问题映射到高维去寻找办法,还可以用“核函数”这个东西,把解决办法再转到低维去处理。...我们用K()表示核函数,那么核函数作用就是: K(x,z)= 避开了X映射到H(X),Y映射到H(Y)这么一个过程。 有这么神吗?...有的,给你举个例子就知道了: 在这个例子中,核函数在低维计算的结果完全等价于原问题:两个变量高维映射后的内积。这么一来,就避开了直接在高维空间中进行计算。那么问题来了,这个核函数是固定的吗?

    77080

    为什么 C# 的 string.Empty 是一个静态只读字段,而不是一个常量呢?

    使用 C# 语言编写字符串常量的时候,你可能会发现可以使用 "" 而不能使用 string.Empty。...于是我们需要调用 String 的构造函数,以便编译器不会将其标记为文字。将其标记为文字将意味着它不会显示为我们可以从本机代码访问的字段。...- Stack Overflow 我写过一篇文章 .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例 - 吕毅。...String 类的构造函数(注意不是静态构造函数,String 类的静态构造函数是特殊处理不会调用的); 而如果这是一个静态字段,那么编译器可以在不做特殊处理的情况下,生成 ldsfld string...关于使用不安全代码转换字符串的方法可以参见: C# 字符串首字符大写 - 林德熙 .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例 - 吕毅 "" 和 string.Empty 到底有什么区别

    1.1K00

    C#语言和JAVA、C++的对比学习

    C#的字符串对象,和JAVA类似,都是“不可变”的。由于有虚拟机的支持,所以字符串类型可以在内存中“无感知”的缓存。...除了用来构造对象,还可以用来隐藏基类被继承的成员,同时也可以用来在泛型使用中约束模板中的参数必须带有公共的无参数构造器——这点在JAVA里面也是靠所谓JavaBean规范来约定,而C#则直接提供了语言支持...JAVA的构造函数继承一直是一个笑话,因为如果你在子类的构造函数中,调用了父类的某个特殊形态的构造函数,这个调用实际上不是在你的代码所在的地方运行的!这简直是对程序代码的欺骗。...C++用构造函数列表的方式,来明确的表明构造过程,是比较清楚的。所以C#回到了C++这个优良的传统上,真不知JAVA的设计者为啥要把这个特性简化成现在这个可笑的样子。...C#可以用代码来快速构造匿名对象new Object(…){x=…, y=…} List{1,2,3,…} 这样的写法很有点lamda的风格,从开发效率来说还是很爽的。

    1.8K40

    【分类战车SVM】第五话:核函数(哦,这实在太神奇了!)

    那么高维空间到底是什么样的? 有人说高位空间里其实只有数学意义,在实际中无意义,是这样的吗? 又有人说高维空间里其实有更高级的生物,他们看我们,就像我们看在一个平面进行爬行的虫子一样。...更神奇的是,我们不仅要把一个无解的低维问题映射到高维去寻找办法,还可以用“核函数”这个东西,把解决办法再转到低维去处理。 ? 哦~~这实在太神奇了!...核函数——在低维时空里解决 核函数是干嘛的呢? 在计算的时候,它可以让x和z不用通过H()映射到高维空间再计算内积,而是直接在低维空间里计算了。...我们用K()表示核函数,那么核函数作用就是: K(x,z)= 避开了X映射到H(X),Y映射到H(Y)这么一个过程。 有这么神吗?有的,给你举个例子就知道了: ?...在这个例子中,核函数在低维计算的结果完全等价于原问题:两个变量高维映射后的内积。这么一来,就避开了直接在高维空间中进行计算。那么问题来了,这个核函数是固定的吗?

    76750

    C# 基础知识系列- 2 字符串

    String的常见方法 String 变量的声明方式 C#中字符串常见的声明有两种: 直接使用字面值 即 Strings="12321"; 使用构造器,即 Strings=newString("12321...string的构造函数 string的构造函数一共有以下几种: publicString(charc,intcount); publicString(char[]value); publicString...但是,到这里我们发现一个问题, newstring(stringstr)在哪,前面不是使用了一个 newstring("12321")吗?事实是,并没有这个构造函数。...显然可以看到它走的是 第二种 ,系统将字符串当做字符数组传递给了 string的构造函数。这也为我们揭露了string在内存中的存储方式-字符数组。由此可见字符串的不可变性其实跟数组类似。...空字符串与NULL的区别 空字符串是一个长度为0的字符串;NULL没有长度,如果强行获取.Length将抛出异常 空字符串可以调用字符串所有的方法;NULL无法调用字符串对象的任何方法 空字符串指向的是内存中的某一个地址

    45220

    【分类战车SVM】第五话:核函数(哦,这实在太神奇了!)

    附录:用Python做SVM模型 ---- 前段时间热映的《星际穿越》想必大家都看过,在这部烧脑大片中,主角库珀进入到了高维度空间,在那里,时间这个维度变成实体存在,人们可以像散步一样沿着时间这个维度来回穿梭...那么高维空间到底是什么样的? 有人说高位空间里其实只有数学意义,在实际中无意义,是这样的吗? 又有人说高维空间里其实有更高级的生物,他们看我们,就像我们看在一个平面进行爬行的虫子一样。...核函数——在低维时空里解决 核函数是干嘛的呢? 在计算的时候,它可以让x和z不用通过H()映射到高维空间再计算内积,而是直接在低维空间里计算了。...我们用K()表示核函数,那么核函数作用就是: K(x,z)= 避开了X映射到H(X),Y映射到H(Y)这么一个过程。 有这么神吗?有的,给你举个例子就知道了: ?...在这个例子中,核函数在低维计算的结果完全等价于原问题:两个变量高维映射后的内积。这么一来,就避开了直接在高维空间中进行计算。那么问题来了,这个核函数是固定的吗?

    1.1K50

    MSIL学习------从HelloWorld开始

    另外可以看到C#中写的命名空间在IL中直接变成了一个完整类名。...,  只存在与构造函数(.ctor)和静态构造函数(.cctor)中 rtspecialname  告诉运行时这个函数时特殊的  只存在与构造函数(.ctor)和静态构造函数(.cctor)中 static...Main方法,而另一个则是C#编辑器加上的默认构造函数(.ctor),从这里可以看出C#的一个知识点(未添加构造函数C#会自动添加一个默认构造函数)        构造函数在此不介绍,只说一下Main方法中的内容...  代表加载一个字符串到栈顶     call   方法调用指令,还有另一个方法调用指令为callvirl,在IL中调用方法使用是“::” 而不是C#中的“.”...ret  从当前方法返回,并将返回值(如果存在)放入调用方的计算栈中 3.编写一个IL语言的HelloWorld   通过上面的解析可以看出手写一个简单的IL语言的HelloWorld其实挺简单,只需要依葫芦画瓢就可以

    56930

    C++学习知识点

    C++中,实现多态有以下方法:虚函数,抽象类,重载,覆盖,模板。 2.类的特征 答:封装、继承和多态。 3. C++与C#的区别 (1)C++中类的申明时,不能给数据成员赋值,通常使用构造函数来完成。...而C#可以。还有C++种成员函数可以定义在类外,而C#的则不行,C#是完全面向对象的编程语言。...而C#刚好相反。 (4)C++中的纯虚函数在C#中叫虚构函数。...(5)C++中有指针类型,而C#中没有指针类型,C#中的delegate类型本质上就是C++中的函数指针,通俗来说就是类型化了函数指针,用于函数的回调。 4....6.初始化列表 C++中,构造函数与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。

    1.7K20

    ☀️ 学会编程入门必备 C# 最基础知识介绍(四)——数组、字符串、结构体、枚举、类

    声明 enum 变量 实例 类(Class)❤️ 类的定义 成员函数和封装 C# 中的构造函数 C# 中的析构函数 C# 类的静态成员 总结???? 前言????...在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是 System.String 类的别名。...在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有以下特点: 结构可带有方法、字段、索引、属性、运算符方法和事件。 结构可定义构造函数,但不能定义析构函数。...Box2 的体积: 1560 ---- C# 中的构造函数 类的 构造函数 是类的一个特殊的成员函数,当创建类的新对象时执行。...但是如果你需要一个带有参数的构造函数可以有参数,这种构造函数叫做参数化构造函数。

    1.7K20

    DDD理论学习系列(7)-- 值对象

    而在C#中,值类型的代表是strut和enum,引用类型的代表是class、interface、delegate等。值类型和引用类型的区别,大家肯定都知道,值类型分配在栈上,引用类型分配在堆上。...,我想你在没了解DDD值对像之前肯定会这样写,这并不奇怪,我之前也是这样设计的,为了将Address映射到数据库,我们需要定义一个AddressId作为主键映射,这是数据建模的结果。...固定不变 就是通过构造函数来初始化,所有属性均不提供修改入口。...单个值对象 上面我们提到值对象不会孤立存在,所以我们可以将值对象中的属性作为所属实体/聚合根的数据列来存储(比如,我们可以将收货地址的属性映射到客户实体中)。...但很显然一个客户可以有多个收货地址。这个时候我们该怎么持久化值对象集合呢?不可能把值对象集合的每个元素映射到外层的实体表中,但是创建多个表又增加复杂性,所以一个变态的方法是使用序列化大对象模式。

    1.4K70
    领券