关闭

C#学习笔记一

标签: c#
10人阅读 评论(0) 收藏 举报
分类:

1 string类型变量都是不可变的。你不能修改变量最初引用的数据,只能重新对变量进行赋值操作。

 

public static void Main(string[] s)
{
  string str = "123";

  Console.WriteLine(str);//输出123
  ChangeString(str);
  Console.WriteLine(str);//输出123
}

public static void ChangeString(string s)
{
  s = "HaHa";
}

 

因为在C#string对象是不变对象,假设有string str1=”abc”;那么如果存在有这么一条语句对str1进行再次赋值,如str1=”123”;那么指向str1的栈的地址并没有发生改变,而是在托管堆里重新创建一个新的对象,其值为123,而str1的栈指向托管堆里123的地址,而原先的abc即将会被垃圾回收机制清理掉,所以ChangeString函数里对形参s赋值过程是这样子的:形参s首先也指向abc,但在函数体里s又被指向了HaHa,那么此时是s改变了指向,而实参str并没有改变它原来的指向abc。所以要想在函数里改变实参的值必须用ref,除对象和集合外。

 

字符串是不可变的,也就是说,无论你对一个字符串做任何操作(增加字符、删除字符。。。),都不会改变它的值。问题是,我们不能改变它的值怎么操作字符串呢?解决方法就是创建一个新的字符串,把操作结果赋值给这个新的字符串

 

 

从控制台获得输入:

获取用户在控制台输入文本的一种方法是使用System.Console.ReadLine()。此方法将暂停程序执行,以便用户输入字符。一旦用户按回车创建新的一行,程序就会继续执行。System.Console.ReadLine()方法的输出,也称为返回值(return),就是用户输入的文本字符串。

static void Main(string[] args)

        {

            string firstname;

            string lastname;

 

            Console.WriteLine("Hey You!");

            Console.Write("Please input your first name:");

            firstname = Console.ReadLine();

            Console.Write("Plaease input your last name:");

            lastname = Console.ReadLine();

 

            Console.WriteLine("Your firstname is " + firstname);

            Console.WriteLine("Your lastname is " + lastname);

 

            Console.ReadKey();

        }

 

控制台输出使用索引占位符:

例子:Console.WriteLine(“Your full name is {0},{1}”,firstname,lastname);

占位符除了能够在格式字符串中按任意顺序出现之外,同一个占位符还能在一个格式字符串中多次使用,另外,也可以忽略掉一个占位符。然而,每个占位符都必须对应一个参数,不能使用没有对应参数的占位符。

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8次
    • 积分:10
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:1篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行