C# 个人疏漏整理
2024-10-06 10:35:05
1.dynamic和var不能混为一谈。
var声明局部变量只是一种简化语法,var要求编译器根据之后的表达式推断具体的数据类型。
var只能用于声明方法内部的局部变量,dynamic则可用于局部变量、字段和参数。
表达式不能转型成var,但能转型成dynamic。
使用var的时候,变量必须显示初始化。dynamic则无须初始化。比如说
var i;//报错
var k=;//正确
dynamic j;//正确
2.可以使用out或者ref参数对方法进行重载。
但是如果两个重载方法只有out和ref的区别,这就是不合法的,因为两个签名的元数据表示完全相同。
如下是可以通过编译的:
public void Fun1(string x)
{
} public void Fun1(ref string x)
{
}
但是如果在加上一个out的,如下所示,则编译会报错:
public void Fun1(string x)
{ } public void Fun1(ref string x)
{ } //报错信息:Error 1 Cannot define overloaded method 'Fun1'
// because it differs from another method only on ref and out
public void Fun1(out string x)
{
x = "x";
}
3.可变数量的参数。关键字params,这个关键字只能应用于方法签名的最后一个参数。示例:
public static Int32 Add(params Int32[] values)
{
Int32 sum = ;
if (values != null)
{
for (Int32 i = ; i < values.Length; i++)
{
sum += values[i];
}
}
return sum;
}
调用Add(1, 2, 3),结果为6
4.像public String Field { get; set; }这样属性极简化写法不能实现序列化和反序列化。
5.所有值类型都有一个隐式的公共无参构造器,可new
6.每个委托对象实际上都是一个包装器,包装了一个方法和调用该方法是要操作的一个对象。
最新文章
- codeforces B. Ohana Cleans Up
- 2015最新德淘W家(Windeln.de)新人优惠码wcode0520,赠1000积分,可抵10欧元
- Git 查看某个版本修改了哪些文件
- shell 中 &;&;和||的方法
- scp 在Ubuntu下传文件 基于ssh
- css div要点汇总
- oracle安装界面中文乱码解决
- 关于Memcache mutex设计模式的.net实现
- CoreAnimation6-基于定时器的动画和性能调优
- hashlib使用时出现: Unicode-objects must be encoded before hashing
- 简单的ajax遮罩层(加载进度圈)cvi_busy_lib.js
- JRE System Library [JavaSE-1.7](unbound)
- 利用递归解决“汉诺塔的移动”问题(使用python来做的,其它语言也行)
- HTML&;javaSkcript&;CSS&;jQuery&;ajax(十)
- Webview窗口设置遮罩层
- [HNOI2010]CITY 城市建设
- json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- python序列元素引用容易出错的地方
- 5.5 C++重载赋值操作符
- 记一次Eclipse关于JDK和JRE的问题
热门文章
- Mapreduce报错:java.lang.ClassNotFoundException: Class Mapper not found
- java 图片文字识别 ocr
- animateBackground-plugin
- LeetCode Add Binary |My Solution
- Win7无法安装Flash Player怎么办
- PHP和数据访问之(插入。删除。和更新数据)
- 【MVC5】对MySql数据库使用EntityFramework
- [Swift A] - DataSource 与 Delegate有啥区别?
- CXF 调用方式——动态创建客户端(调用稳定版本号为2.7.18)
- 修改easyui panel 默认样式