C#笔记

实例化对象:.Instantiate .调用
一、程序结构:
(1)命名空间 System.ValueType
(2)类 class
(3)方法 Main
(4)语句
二、变量:(变量名命名规则)
数据类型 变量名 = 值;
变量和常量是相对的:变量是指所存放的值是允许改变的,而常量表示存入的值不允许改变。另外,在为变量赋值时也可以一次为多个变量 赋值
①数字、字母 、下划线组成
②不要以数字开头
③驼峰命名法 (WriteLine 大驼峰)(writeline小驼峰)
④不能用C#中已有的关键字
三、常量:
与变量不同的是,常量在第一次被赋值后值就不能再改变。定义常量需要使用关键字 const 来完成。
const 数据类型 常量名 = 值;
需要注意的是,在定义常量时必须为其赋值,因为不赋值的话以后就再也不能赋值了。另外,也可以同时定义多个常量。
四、数据类型:
(1)数值类型:
整型:C# 语言将整型分成了 byte 类型、short 类型、int 类型、long 类型等,并分别定义了有符号数和无符号数。在 C# 语言中默认的整型是 int 类型。
浮点型:浮点型是指小数类型,浮点型在 C# 语言中共有两种,一种称为单精度浮点型(float),占用四个字节,最多保留7位小数。一种称为双精度浮点型(Double),占用八个字节,最多保留16位小数。在 C# 语言中默认的浮点型是 double 类型。如果要使用单精度浮点型,需要在数值后 面加上 f 或 F 来表示,例如 123.45f、123.45F。
(2)非数值类型:
布尔型:使用 bool 来声明,它只有两个值,即 true 和 false。
字符型:字符型只能存放一个字符,它占用两个字节,能存放一个汉字。字符型用 char 关键字表示,存放到 char 类型的字符需要使用单引号括起来,例如 ‘a’、‘中’ 等。
字符串型:字符串类型能存放多个字符,它是一个引用类型,在字符串类型中存放的字符数可以认为是没有限制的,因为其使用的内存大小不是固定的而是可变的。使用 string 关键字来存放字符串类型的数据。字符串类型的数据必须使用双引号括起来,例如 “abc”、“123” 等。
五、运算符:
(1)算数运算符:
算术运算符是最常用的一类运算符,包括加法、减法、乘法、除法等。
(2)逻辑运算符:
逻辑运算符主要包括与、或、非等,它主要用于多个布尔型表达式之间的运算。
&&:(与)如果运算符两边都为 True,则整个表达式为 True,否则为 False;
||:(或)如果运算符两边有一个或两个为 True,整个表达式为 True,否则为 False;
!:(非)表示和原来的逻辑相反的逻辑
(3)比较运算符:
比较运算符是在条件判断中经常使用的一类运算符,包括大于、小于、不等于、大于等于、小于等于等,
(4)位运算符:^
(5)赋值运算符:
(6)三元运算符:
布尔表达式 ? 表达式 1: 表达式 2
问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
在这里插入图片描述

六、注释的快捷键:
CTRl+K+C
CTRl+K+U 取消
七、物体发生碰撞的条件:
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigibody刚体。
八、Java和C#的共同点:
面向对象的语言:继承、封装、多态
不同点:
继承:可传递性和单一性。
九、C#类型转换:
隐式类型转换:这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派 生类转换为基类。
显式类型转换: 即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。Convert.ToInt();
十、int类型和 string类型有什么区别
String可以初始化非数字数据
int用于初始化数据,但仅限于数字的初始化,运行速度快
十一、unity中四种光源:
(1)Directional
方向光源,这种类型的灯光可以被放置在无穷远处,可以影响场景中的一切游戏对象,类似于自然界中太阳光的照明效果。
在这里插入图片描述

(2)Point
点光源从一个位置向四面八方发出光线,影响其范围(Range)内的所有对象,类似灯泡的照明效果。在这里插入图片描述
(3)Spot
聚光灯。这种灯光从一点发出,在一个方向按照—个锥形的范围照射,该锥形是由聚光灯角度.(Spot Angle) 和范围 (Range) 界定的。
在这里插入图片描述
(4)Area
区域光/面光源。该类型的光源无法应用于实时光照,仅适用于光照贴图烘焙 (lightmap baking)), 这种光能从各方向照射一个平 面的矩形截面的一侧。
在这里插入图片描述
十二、生命周期
(1) Awake:
只会被调用一次,在Start方法之前被调用! 主要用于字段值的初始化工作,禁用脚本,创建游戏对象,或者Resources.Load(Prefab) 对象。
(2)Start:
只执行一次,在Awake方法执行结束后执行,但在Update方法执行前执行, 主要用于程序UI的初始化操作,比如获取游戏对象或者组件。
(3)FixedUpdate :以固定频率调用的函数。
(4)Update :以非固定的频率调用的函数,该频率与设备的性能和程序自身有关。
(5)LateUpdate:每当Update调用完之后立马调用。
(6)GUI:
十三、unity里面所有物体的基类
gameobject
十四、flexlupdate、update、lateupdate区别
总体来说,Update() 和 LateUpdate() 属于立即更新,更新之间的频率是不固定的,比如某一帧有一个耗时操作时,就会影响到下
一帧更新时间,所以对更新频率要求比较稳定的物理系统(如Rididbody)就不太适合在这里处理更新。
FixedUpdate() 虽然是固定更新,但是其实也是相对固定的,比如某一帧耗了好几秒,它依然会卡住。不过正常的程序会优化耗时操作,小范围的帧率波动是正常的,可以让它更新的时间间隔稍微长一点,这样它的更新是比较平滑的。
在实际的开发中,例如以秒为单位的倒计时,并不需要每一帧去判断时间,所以用 FixedUpdate 就再合适不过了。
十五、继承特点:
可传递性或单一性 一个子类只能有一个父类,而父类可以有多个子类
十六、形参和实参的有什么区别?
实参就是常量实践的量,是不变的;
形参就是变量,是可变的的;
格式: 访问修饰符 (可选修饰符) 返回值类型 方法名(){}
十七、C#修饰符:
(1) public
成员可以被任何代码访问。
(2) private
成员仅能被同一个类中的代码访问,如果在类成员前未使用任何访问修饰 符,则默认为private。
(3) internal
成员仅能被同一个项目中的代码访问。
(4) protected
成员只能由类或派生类中的代码访问。派生类是在继承中涉及的
十八、可选修饰符:
在修饰字段时通常用两个修饰符,即readonly (只读)和static (静态的)。
使用 readonly 修饰字段意味着只能读取该字段的值而不能给字段赋值。
使用 static 修饰的字段是静态字段,可以直接通过类名访问该字段。
需要注意的是常量不能使用 static 修饰符修饰。
十九、返回值类型:
用于在调用方法后得到返回结果,返回值可以是任意的数据类型,如果指定了返回值类型,必须使用 return 关键字返回一个与之类型匹配的值。如果没有指定返回值类型,必须使用 void 关键字表示没有返回值。
二十、物体移动的代码:
在这里插入图片描述
二十一、形参和实参的区别

二十二、销毁
Destory

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在WPF中,我们可以使用控件的属性来实现文本框和密码框的水印效果(也称为背景文字提示)。下面是实现该效果的一些方法: 方法一:使用控件的Placeholder属性 WPF的文本框和密码框控件都有一个名为Placeholder的属性,该属性可以用来显示文本框或密码框中的默认提示文本。当用户在文本框或密码框中输入内容后,该提示文本就会自动隐藏。 例如,以下代码演示了在WPF中如何使用Placeholder属性来实现文本框的水印效果: ```xml <TextBox Placeholder="请输入文本"></TextBox> ``` 同样地,我们可以在密码框中使用Placeholder属性来实现密码框的水印效果: ```xml <PasswordBox Placeholder="请输入密码"></PasswordBox> ``` 方法二:使用控件的Adorner WPF中的Adorner是一种用于在控件上添加装饰元素的机制。我们可以使用Adorner来实现文本框和密码框的水印效果。 以下是实现该效果的一般步骤: 1.定义一个自定义控件,例如WatermarkTextBox。 2.在WatermarkTextBox中定义一个名为Watermark的依赖属性。该属性表示水印提示文本。 3.重写WatermarkTextBox的OnRender方法,使其在控件上绘制水印提示文本。 4.在WatermarkTextBox的TextChanged事件中判断文本框中是否有内容,如果有则隐藏水印提示文本,否则显示水印提示文本。 以下是WatermarkTextBox的示例代码: ```csharp public class WatermarkTextBox : TextBox { public static readonly DependencyProperty WatermarkProperty = DependencyProperty.Register( "Watermark", typeof(string), typeof(WatermarkTextBox), new PropertyMetadata(default(string))); public string Watermark { get { return (string)GetValue(WatermarkProperty); } set { SetValue(WatermarkProperty, value); } } protected override void OnRender(DrawingContext drawingContext) { base.OnRender(drawingContext); if (string.IsNullOrEmpty(Text) && !string.IsNullOrEmpty(Watermark)) { var formattedText = new FormattedText( Watermark, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(FontFamily, FontStyle, FontWeight, FontStretch), FontSize, Foreground); drawingContext.DrawText(formattedText, new Point(2, 2)); } } protected override void OnTextChanged(TextChangedEventArgs e) { base.OnTextChanged(e); if (string.IsNullOrEmpty(Text) && !string.IsNullOrEmpty(Watermark)) { InvalidateVisual(); } } } ``` 使用WatermarkTextBox时,只需要在XAML中设置Watermark属性即可: ```xml <local:WatermarkTextBox Watermark="请输入文本"></local:WatermarkTextBox> ``` 同样地,我们也可以定义一个WatermarkPasswordBox类来实现密码框的水印效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值