c#学习笔记——2
来源:互联网 发布:ipad无法下载软件 编辑:程序博客网 时间:2024/05/21 07:10
反复使用最好用静态(避免反复编译)
接口:
接口定义: interface 接口名{接口成员}
接口的存在就是为了实现多态
接口成员可以是:方法、属性、索引、事件声明 (与方法有关)
方法写法: 返回类型 方法名(参数列表);
和抽象类的使用一样,必须要实现这个接口中的方法
实现接口的类的方法不需要加overwrite
例子:
interface Ihaha
{
void Haha();
void HaHa(int num);
}
保证实现接口的类中的接口定义方法即可
如果这个类是一个抽象类,那么可以将接口中的方法实现,也可以将其作为一个抽象方法。
如果不是抽象的,就必须实现方法过程。
属性定义:
返回类型 属性名{选择器} 如:
interface IProperity
int Num
{
get;
set;
}
class MyTest1:IProperity
{
int num;
public int Num
{
get{return num;}
set{num=valuel;}
}
}
例子
interface IProperity
{
// 返回类型 属性名 { 选择器 }
int Num
{
get;
set;
}
// 在接口中属性具有只读属性与只写属性之分
int Num1
{
get;
}
int Num2
{
set;
}
}
class MyTest1 : IProperity
{
// 实现接口的时候一般情况需要添加一个字段
int num;
public int Num
{
get
{
return num;
}
set
{
num = value;
}
}
public int Num1
{
get { return num; }
}
public int Num2
{
set { num = value; }
}
}
总结:
接口内成员的定义没有访问修饰符,都是返回类型开头+名字+();没有方法体 如int Fun();
实现接口类中,成员的实现。方法实现与正常类一样没有overwrite如:public int Fun(){}; 属性的实现一般要加一个字段。
(显示实现接口没有访问修饰符)
抽象类内成员定义在正常基础上加abstract如public abstract void Fun();
子类中实现父类抽象成员时,方法在正常基础上加overwrite如public overwrite void Fun(){};属性的实现一般要加一个字段,也要overwrite。
显示实现接口,语法
返回类型 接口名.方法名(参数)
{
方法体
}
可以知道显示实现接口方法没有访问修饰符(怎么调用)
显示实现接口只能通过接口进行调用
显示实现接口例子:
interface IF1
{
void Func();
}
interface IF2
{
void Func();
}
class MyClass : IF1, IF2
{
void IF1.Func()
{
Console.WriteLine("接口1的方法");
}
void IF2.Func()
{
Console.WriteLine("接口2的方法");
}
}
调用时:MyClass m1 = new MyClass();
IF1 f1 = m1;
f1.Func();
IF2 f2 = m1;
f2.Func();
ref在使用前要赋值,out在方法中要赋值。(ref与out区别)
try cach finally (即使catch里面有return语句,还是会执行finally里的语句)
finally里面不能有return语句。
装箱与拆箱是什么
答:装箱:值类型转换为引用类型 拆箱:引用类型转换为值类型
多态的实现有哪几种方式
1. 父类实现多态
2. 抽象类实现多态
3.接口实现多态
CLR (common language runtime) 公共语言运行库
刚刚生成的对象都叫0代
回收一次,那些没有被回收的对象就变成1代
对于1代再回收一次,那些没有被回收的对象就变成2代
每一代都有一个内存大小
异常:
1.如何抛出异常 throw new Exception(”异常信息“);异常是个对象需要new出来。
2.异常抛哪里去了 异常抛给调用它的方法,如果该方法没有处理异常,就再上抛(调用它的方法)
如果做了异常处理,就不再往上抛了
try{} //多个方法嵌套调用时,try catch写在主函数中。
catch{}
try{}
catch{}
finally{}
try{} 一个用到的例子:嵌套调用方法中,某一个子方法中finally中加入释放资源的代码,出现异常时就可以释放资源了。否者将执行住函数的catch代码,不会释放资源。
finally{}
例子:
class Program
{
static void Main(string[] args)
{
try
{
Func1();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
public static void Func1()
{
// 如果该方法中用到一个资源需要被回收
try
{
Func();
}
finally
{
Console.WriteLine("释放资源");
}
}
public static void Func()
{
throw new Exception("123");
}
}
字符串的定义:
1. string str="我是一个字符串";
2. char[] chars ={'1','一','壹'};
string str1=new str(chars);
3.string str2=new string('c',3);
//字符串可以当做数组进行遍历
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i]);
}
字符串与char[]数组相互转换的一个例子:
将string str="我是一个字符串";改为str="你是一个字符串";
思路:
转化为char[]数组,然后再修改。
char[] chs = str.ToCharArray();
chs[0] = '你';
str = new string(chs);
//字符串不可变的
string str = "1234";
tring str1 = str;
str = "456";
Console.WriteLine(str); //输出456
Console.WriteLine(str1); //输出1234
字符串统一,再比较
//将字符串进行大小写变化
大小写:
string str1 = "a";
str1=str1.ToUpper();
str1=str1.ToLower();
字符串的比较:Compare
//int string.Compare(str1, str2)
// str1 > str2 返回1
// str1 = str2 返回0
// str1 < str2 返回-1
int res = string.Compare(str1, str2, true); 第三个参数为true则比较时忽略大小写,为false则不忽略。
字符串的比较: Equals
bool str.Equals(str1);
bool string.Equals(str1,str2);相等则true,否则false。
bool isRight = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); 忽略大小写。
去掉两端的字符Trim()
string str = " 123 ";
string str1 = str.Trim();//str1="123";
string stemp = "[12345]";
string stemp1 = stemp.Trim(']', '[');stemp1 = "12345";
扩展的方法TrimEnd TrimStart 只去掉后端或前端的字符
合并 将object类型的数组,用指定的字符串连接,返回一个字符串
string[] strs = { "梅西", "卡卡", "郑大世" };
梅西|卡卡|郑大世
string.Join(分隔符, 数组)
string str = string.Join("|", strs);
分割 将字符串用指定的params char[] 进行分割。(或 string[])进行分割,返回一个string[]。 有2个或以上重载参数时均没有params
// string[] str.Split(需要分割的符号);
//string path = @"C:\Windows\System32\1.dll";
//string[] pathes = path.Split('\\');
string str = "I am a student! how are you!";
string[] strs1 = str.Split(new char[] { ' ', '!' }, StringSplitOptions.RemoveEmptyEntries); //返回值不包含空字符串的数组。
查找
Contains
bool str.Contains("要找的字符串");
例如
string str = @"D:\Music\孙燕姿_专辑\孙燕姿_天黑\孙燕姿_专辑\孙燕姿_\孙燕姿_专辑\孙燕姿_天黑黑天黑黑黑.mp3";
bool isRight = str.Contains("孙燕子");
//IndexOf (字符或字符串均可 )
int str.IndexOf("要找的东西")
int index = str.IndexOf("孙燕子");
默认情况下从字符串开始进行查找,找到第一个结束,返回位置
可以使用第二个参数,表示从字符串的第几个字符开始寻找
如果没有找到就返回-1
下面是典型用法:找到所有"孙燕姿"所在的索引下标
int index=-1;
do
{
index=str.IndexOf("孙燕姿",index+1);
if(index!=-1)
{
Console.WriteLine(index);
}
}
while(insex!=-1);
拓展:IndexOfAny,传入字符数组,只要找到数组中任意一个则返回。
char[] nums = {'1','2','3','4','5','6'};
int index = str.IndexOfAny(nums,4);
Substring() :截取子字符串
1、string str.Substring(index)
从index开始到结束的所有部分
string path = @"D:\Music\孙燕姿_天黑黑.mp3";
int index = path.LastIndexOf('\\'); //从后往前找'\'。
string temp = path.Substring(index + 1);//找到文件名
2、string str.Substring(index, Length); //截取指定索引下标处开始的指定长度
string data = "2012年6月29日";
int index = data.IndexOf('月');
string temp = data.Substring(index + 1, 2);
例子:
string str = "我是一个走马灯";
while (true)
{
Console.Clear();
string head = str[0].ToString();
string body = str.Substring(1);
str = body + head;
Console.WriteLine(str);
System.Threading.Thread.Sleep(200);
}
System.Threading.Thread.Sleep(100);让程序停止100ms。
插入:Insert 指定处插入指定的字符串(第一个参数为插入后指定字符串的索引)。
tring str = "012345";
str = str.Insert(3, "我");
删除:与substring使用参数一样,作用是删除指定索引下标处,(指定长度的元素)。
str = str.Remove(3,1);
判断开始与结尾
比如检查是否为MP3歌曲
string path = @"D:\123\456\happy2000.wma";
if (path.EndsWith(".mp3"))
{
Console.WriteLine("是MP3");
}
else
{
Console.WriteLine("不是mp3");
}
// path.StartsWith("")
总结:
数组转字符串:
new string(char[]类型数组)
string.Join(字符串分隔符, object数组)
字符串转数组:
str1.ToCharArray () 返回char[]
str1.Split (params char[]) 返回string[]
- C#学习笔记2——变量
- C#学习笔记2——反射
- c#学习笔记——2
- C#学习笔记(—)
- C#学习笔记—LINQ
- C#学习笔记—XML
- C#学习笔记—字符串
- C# 学习笔记(2)
- C# 学习笔记(2)
- C#学习笔记2
- C#学习笔记(2)
- C#学习笔记2
- c#学习笔记2
- c#学习笔记2
- C#学习笔记2
- c#学习笔记2
- C#学习笔记2
- C# 学习笔记 2
- 腾讯微博审核结果出来了,历时34天
- 两把集群管理利器
- Eclipse下导入jar包
- Spring AOP的实现机制
- 手把手教你认识mac图标、制作DMG文件和刻录光盘
- c#学习笔记——2
- 用BAPI创建公司间往来凭证
- POJ 3207 2-sat 判断是否有合法解
- 学习笔记(3):C程序设计(第四版)谭浩强著_第五章~第六章
- 用了ADO.NET 2.0 SQ
- Eclipse常用快捷键
- Winform中怎样在一个窗体中获得另一个窗体中的控件的值?
- hibernate tips
- μCOS-II源码文件之OS_FLAG.C