C#学习笔记
C#学习中遇到的一些问题以及记录。
C#中Readline与Readkey的区别
Readline是读到一个回车为止。
Readkey是等待按键并读取,就是随便按一个键就行。类似于c语言的getchar()
Application.EnableVisualStyles()的作用
Application.EnableVisualStyles()的作用 定义:
public static void EnableVisualStyles ()
此方法为应用程序启用可视样式。
如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。
若要使 EnableVisualStyles 生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是 Main 函数的第一行。当调用 EnableVisualStyles 时,无需单独的清单即可启用可视化样式。
简单的说就是让你的控件(包括窗体)显示出来。
static class Program { //The main entry point for the application. [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }
Application.SetCompatibleTextRenderingDefault(false)作用
1.作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI)
true使用GDI+方式显示文本,
false使用GDI方式显示文本.
2.只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法.
3.只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常.
C#中Mutex的用法
C#中Mutex是互斥锁,位于System.Threading 命名空间中。顾名思义,它是一个互斥的对象,同一时间只有一个线程可以拥有它,该类还可用于进程间同步的同步基元。
如果当前有一个线程拥有它,在没有释放之前,其它线程是没有权利拥有它的。我们可以把Mutex看作洗手间,上厕所的人看作线程;上厕所的人先进洗手间,拥有使用权,上完厕所之后出来,把洗手间释放,其他人才可以使用。
线程使用Mutex.WaitOne()方法等待C# Mutex对象被释放,如果它等待的C# Mutex对象被释放了,它就自动拥有这个对象,直到它调用Mutex.ReleaseMutex()方法释放这个对象,而在此期间,其他想要获取这个C# Mutex对象的线程都只有等待。
我们可以利用这个特性来控制一个应用程序只能运行一个实例。其他实例由于得不到这个Mutex而不能运行。
当第二个实例想运行的时候,由于已经有一个进程拥有了这个互斥锁,此进程不能拥有,所以进程启动被终止。此外还需说明一点,mutex的name是在系统中是唯一的,也就是上述代码中的Name,系统依靠这个name属性来标识唯一的Mutex。
rider在定义方法时会将NotImplementedException
添加到许多自动生成的代码中
正是它所说的,你的方法还没有实现。它什么也没做。它只是作为占位符存在。类似于写Python代码中pass。
C#中接口(interface)和抽象类(abstract class)的区别
对面型对象理解总觉得不够深入,这里记录一下:
接口(interface)
- 接口是无状态的
- 接口一般只有成员方法,一般无成员变量,属性,虽然也可以有,但基本上不这样做
- 接口中不能包含实现代码,子类中必须对接口方法进行实现
- 接口可以被多个类继承实现
抽象类(abstract class)
- 抽象类是可以有状态的
- 抽象类除了可以有抽象方法外,还可以有成员变量、属性,也可以有非抽象方法
- 抽象类中可以有自己的非抽象接口实现,子类可以复用
- 抽象类不能被多继承,一个类只能继承一个父类
- 抽象类中的抽象方法在子类中也可以是抽象的,直到最后有个子类的实现即可
C#的多行字符串
添加多行:使用@
string query = @"SELECT foo, bar FROM table WHERE id = 42";
将字符串变量值添加到中间:使用 $
string text ="beer"; string query = $"SELECT foo {text} bar ";
多行字符串在中间添加值:使用 $@
string text ="Customer"; string query = $@"SELECT foo, bar FROM {text}Table WHERE id = 42";赞赏
微信赞赏支付宝赞赏
发表评论