C# 代码规范不清楚问题整理

之前学习只求理解,从来不记这些专业词汇,对代码也没有优化的想法。现在就回来补课来了TAT

 

目录

1.Field 字段是什么?什么是引用字段?

2.property和parameter和attribute的区别?

property

parameter

attribute

我看不懂,我人傻了。= =

3.修饰符和标识符和关键字的区别?

修饰符

标识符

关键字

4.事件是什么?事件处理函数是什么?事件参数是什么?

以后用到事件了再回来补充。

5.as怎么使用?

6.对象生存期是?

7.Struct和Class怎么选择?

8.非托管资源是指什么?

 9.装箱、拆箱是什么?

性能这块也弄不太明白。

10.方法重载和默认参数?

11.值语义、值类型、基类型?

12.类的逻辑数据成员是指什么?

13.方法和属性怎么选择?

14.构造器?

15.替换签名是什么?

不知道,没查到。

剩下的部分


1.Field 字段是什么?什么是引用字段?

引用字段区别于值字段,就是类似指针的字段呗,动态分配内存之类的。

public class Sample
{
    int m_field;//这个就是字段
    int p_field = new int();//这个可能就是引用字段
}

值类型:

byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。结构和枚举。

引用类型:

string 和 class统称为引用类型。

  • 值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中。
  • 引用类型的对象总是在进程堆中分配(动态分配)。

2.property和parameter和attribute的区别?

property

就是类里为private和protected变量提供接口的那个,get;set;。

可以看成是一种对数据的封装。

C#3.0引入了Auto-Implemented Properties机制

为什么使用属性?

  要求字段只能读或者写。

  要求限制字段的取值范围。

  在改变一个字段的值的时候希望改变对象的其他一些状态。

parameter

参数有四种类型,值参数,引用参数,输出参数和数组型参数。

值参数:值拷贝的形式,在方法中更改不会保留更改的值(局部变量)。

引用参数:保留更改的值的。

输出参数:在方法中进行初始化的参数。

数组型参数:把输入的数值按照规则传入一个新建的数组中。

public class Sample
{
    int m_field;//这个就是字段
    public int field//这个是属性,property
    {
        get;set;
    }
    static void Function(ParaType ptr1,ref ParaType ptr2,out ParaType ptr3)
    {
        //ptr1就是值参数
        //ptr2就是引用参数
        //ptr3就是输出参数
    }
    static void FunctionParam(Params object[] ptr4)
    {
        //ptr4就是数组型参数
    }
}
static void main()
{
    int i,j,k;
    i=j=0;//这两种需要先进行初始化,out的可以不用
    Function(i,ref j,out k);
    FunctionParam("a","b","c");
}

attribute

https://blog.csdn.net/xiaouncle/article/details/70216951

https://blog.csdn.net/FantasiaX/article/details/1636913?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

https://blog.csdn.net/xiaouncle/article/details/70229119

attribute可以理解成自定义修饰符。浅显的理解,大概是类似于一个给类或变量或者属性啊什么一个标签,用来给看/调试代码的人区分这些东西,便于维护整理调试代码。如果后面用到了会回来补充。

我看不懂,我人傻了。= =

3.修饰符和标识符和关键字的区别?

修饰符

修饰符都属于关键字。修饰符是指用于声明的那些关键字。(public那些)

https://docs.microsoft.com/zh-cn/previous-versions/6tcf2h8w%28v%3dvs.120%29

标识符

写代码时自己起的那些名字。

关键字

https://docs.microsoft.com/zh-cn/previous-versions/x53a06bb(v=vs.120)

关键字是指不能被用作标识符的已经预定义了的标识符。(if啊等等一切)

4.事件是什么?事件处理函数是什么?事件参数是什么?

事件就理解成用户的一个操作。

事件处理函数就是处理事件的函数,用于处理用户操作的。实现线程间通信的。

以后用到事件了再回来补充。

5.as怎么使用?

as是用来进行强制类型转换的。我感觉用在子类基类之间?

Type1 a = new Type2();
Type2 newValue = (Type2)a;//不安全的强制类型转换

Type1 a = new Type2();
Type2 newValue = a as Type2;//安全,不成功会返回NULL

------以下是错误用法------

Type1 a = new Type1();
Type2 newValue = a as Type2;//不能进行类型之间的转化,需要强制转换

Type1 a = 11;
Type2 newValue = a as Type2;//值类型不能使用

强制转换就配合is使用,具体的就不写了。

6.对象生存期是?

静态生存期:与程序运行期相同。

动态生存期:诞生于声明点,结束于块结束时。

把不再引用的字段设置为NULL便于回收内存。

7.Struct和Class怎么选择?

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct

  • 在大多数的情况下,都应该选择类,除非满足以下情况,才考虑选择结构体:
  • 类型具有基元类型的行为
  • 类型不需要从其它任何类型继承
  • 类型也不会派生出任何其它类型
  • 类型的实例较小(约为16字节或者更小)
  • 类型的实例较大,但是不作为方法的参数传递,也不作为方法的返回值。

8.非托管资源是指什么?

“非托管资源:就是非.NET平台框架的资源,比如,连接数据库,操作Office等.NET里的平台互操作都是非托管资源。这些资源用完都要立即释放掉的。”

 9.装箱、拆箱是什么?

装箱:把值类型转换成引用类型。

拆箱:把引用类型转换成值类型。

int i=0;
System.Object obj=i;
Console.WriteLine(i+","+(int)obj);

https://www.cnblogs.com/zjtao/p/11345442.html

上面的代码,三次装箱,一次拆箱。

对性能的影响?

引用类型增加会增加托管堆的压力、垃圾回收的次数。

值类型过多会有损应用程序的性能。

所以大对象避免使用值类型。

装箱操作会对应用程序产生消耗。

避免过多的装箱操作。

性能这块也弄不太明白。

10.方法重载和默认参数?

默认参数就是在方法中给了默认值的参数。

所以如果不想使用默认参数,就重载两个方法,一个包含该参数,一个不包含。

11.值语义、值类型、基类型?

https://www.cnblogs.com/ly8838/p/3929025.html

https://blog.csdn.net/weixin_41143631/article/details/87710751

值语义是指对象的拷贝与原对象无关,可以彼此独立改变互不影响。

 值类型:第一个问题里有提及,感觉就是是值语义的类型就是值类型。

 基元类型:编译器直接支持的类型。

https://www.cnblogs.com/ASPNET2008/archive/2009/06/14/1503041.html

https://www.cnblogs.com/ITusk/p/7105148.html

12.类的逻辑数据成员是指什么?

逻辑数据成员就是类的逻辑属性。比如欧盟-国家这样的。

13.方法和属性怎么选择?

问题2里有。个人理解就是属性是为了改变类里面的私有字段,方法是针对整个类的操作。

14.构造器?

就是构造函数。

15.替换签名是什么?

不知道,没查到。

 

剩下的部分

异常、事件、委托、事件处理器、Stringbuilder与String、强类型、硬编码、语义不同的值、域、空引用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值