黑马程序员 自学20C#面向对象之命名空间与String
来源:互联网 发布:软件开发热门发展方向 编辑:程序博客网 时间:2024/06/08 05:37
可变参数
2014/4/18
任何类型都可以自动转换为object类型(父类)
public static void WriteLine(string format,params object[]arg);
params:当一个参数用params修饰的话,我们称其为可变参数,就是不用传数组了,可以传元素,编译器会自动将元素组成一个数组。
Console.WriteLine(“{0}{1}{2}”,1,2,3,);
eg:
……Main()
{
Test(10,20,30)
}
……Test(params int[]arr) 虽然可以传元素,但仍有类型限制
{}
eg:
Test(10,20,30,40)
……… 这样写是错的,params无法确定那个是元素,那个是age的
Test(params int[]arr,int age)
↓
Test(int age,params int[]arr) 将可变参数作为最后一个参数
命名空间
用于解决类名重名问题,可以看作”类的文件夹”
命名空间不允许以数字开头,命名空间中放类。
一个命名空间中不见得只放一个(类)文件
当我们访问类时,只能访问到自己命名空间下的类。
不在同一个命名空间下的类,不能被直接访问。
若想访问别的命名空间下的类:
1. 通过using引用对方的命名空间。
eg: Console.WriteLine(“”);→using system
2. 写全称:命名空间名+ . +类名
eg:
using Testspace;
……
{
TestClass t = new TestClass();
}
or
{
TestNameSpace.TestClass t = new TestNameSpace.TestClass();
}
system 是.Net框架下的根命名空间
ctrl+ . 再回车,即可自动让系统写命名空间,前提是拼写正确。
命名空间下可以包含其他命名空间:
命名空间 . 命名空间(命名空间在内又有一个namespace)
(公司名称 项目名)
命名空间之间的关系是逻辑划分的关系,非物理位置。
String类
其实string是一个类
int→ struct System.Int32
string→Class System.String
string 可以 看作char的只读数组。
C语言中: 就是
数组可以通过下标来访问:
string s =”hello,World!”
Console.WriteLine(s[2]); →l
字符串可以看作一个字符数组
只读:
若是从字符串过来的,它只能是只读的,因为是通过索引器来访问的,char数组不能对其字符串再次赋值。
所以字符串一旦赋值,就不能再改变。
所以,string可以看作char的只读数组。
类方法的调用→该类对象的实例名.方法名
有static修饰的→类名.方法名
string可new可不new
string s =”hello,World!” →就是一个string对象
string的对象只要用””引起来就是产生了一个string对象。
对string中元素的修改:
定义一个char数组:
string s=”hello,World!”
char[] chars=s.ToCharArry();
char[1]=”i”;
(变回字符串→调用string的构造方法↓:)
s=new string(chars);
Console.WriteLine(s); →hillo,World!
我们没有办法直接改变string中的char元素,我们只能通过变量名(对象名).ToCharArray();得到一个(char)数组,然后修改这个(char)数组中的元素,最后调用(字符串)string的构造方法,传这个(char)数组来生成一个(新的)String。
(实例名可以看作变量名)
状态→属性
行为→方法
要学会查看MSDN进行自学。
词汇小结:
object: 物体
params: 参数(s)
练习:
class Program { static void Main(string[] args) { //练习一: #region 通过类的实例化来写 Console.WriteLine("输入你想要显示的名字:"); Console.Write("请输入:"); String name = Console.ReadLine();//定义一个name的string类来接收 Name name1 = new Name(name); int accept = name1.Count(); Console.WriteLine("你输入的名字为:{0},其字符串长度为{1}。", name, accept); Console.ReadKey(); #endregion #region 正确的简便写法 do { Console.WriteLine("输入名字:"); String name = Console.ReadLine(); if (name == "" || name == " ") { throw new Exception("请重新输入"); } else { //char[] count = name.ToCharArray(); Console.WriteLine("你输入的名字为{0},字符串长度为{1}。", name, name.Length); break; } } while (true); Console.ReadKey(); #endregion //练习二: //不能判断大小写并且输入完毕才能显示输入错误的版本: Console.WriteLine("请输入你最喜欢的课程名称"); String class1=Console.ReadLine(); Console.WriteLine("请另一位输入最喜欢的课程名称:"); String class2 = Console.ReadLine(); Class samewhat = new Class(class1,class2); samewhat.Show(); Console.ReadKey(); } } class Name { private String name; public Name(String name) { if (name == " " || name == "") {//如果想在类中判断输入条件,则应当在构造方法内开始判断,而不是对字段进行封装时候判断。 throw new Exception("请输入正确的名字"); } else this.name = name; } //public String Name//疑问:与构造方法只读的区别 已解决 //{ // get { return Name} //} /// <summary> /// 这个方法调用.ToCharArray()方法来拆分String类中的各字符,并形成char数组。 /// </summary> /// <returns>数组名.Length</returns> public int Count() { char[] names = name.ToCharArray(); int count = names.Length; return count; } }class Class { private String class1; private String class2; public Class(String class1,String class2) {//用类的构造方法判断有个坏处,就是输入多个变量时,输入完毕才能进入判断。 if (class1 == "" || class1 == " " || class2 == "" || class2 == " ") { throw new Exception("请输入正确的名称"); } else { this.class1 = class1; this.class2 = class2; } } /// <summary> /// 多写一步这个是为了程序后面对class1的再次赋值。 /// </summary> public String Class1 { get { return class1; } set { if (value == "" || value == " " ) { throw new Exception("请输入正确的名称"); } else { class1 = value; } } } public void Show() { //string classA = class1.ToUpper();/ToLower(); //string classB = class2.ToUpper();/ToLower(); //if (String.Compare(class1,class2,true)==0)//(classA==classB) if(class1.Equals(class2, StringComparison.OrdinalIgnoreCase)) Console.WriteLine("你俩喜欢一样的课程:" + class1); else Console.WriteLine("你俩喜欢不同的课程,分别是{0}和{1}",class1,class2); } }
- 黑马程序员 自学20C#面向对象之命名空间与String
- 黑马程序员 自学17C#面向对象之基本概念
- 黑马程序员 自学19C#面向对象之构造方法
- 黑马程序员 自学18C#面向对象之访问修饰符与属性
- 黑马程序员----C#面向对象自学笔记
- 黑马程序员java自学总结之--面向对象
- 黑马程序员之c#面向对象二
- 黑马程序员-C#面向对象之封装
- 黑马程序员-C#面向对象之继承
- 面向对象之命名空间
- 黑马程序员_C#面向对象(值类型和引用类型,构造函数,常量与静态成员,命名空间,索引)
- 黑马程序员--C#中面向对象与面向过程
- c#面向对象(二)----命名空间
- 黑马程序员 C#基础_命名空间
- 黑马程序员--C#系统命名空间
- 黑马程序员--构造方法与命名空间
- Javascript面向对象之命名空间问题
- 黑马程序员之C#学习笔记:面向对象小结
- c++ error initialization of "xxx" is skipped by case label
- JavaSE17_多线程
- R Task Views
- 最近需要配置服务器,这里做下记录总结(LAMP)
- 结构体在内存中的对齐规则
- 黑马程序员 自学20C#面向对象之命名空间与String
- PROPAGATION_REQUIRED及其他6种事务传播行为种类
- HDU 3060 多边形面积并
- github使用教程
- Orcale 数据库客户端PL/SQL 中文乱码的问题
- jsp的内置对象详解
- 基于IDEA的SSH项目之四:简单的切面应用
- JAVA 创建JFRAME窗口
- JavaSE05_面向对象