黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder

 

亲情奉献全套精品.Net基础视频教程(1-9)2168:36 亲情奉献全套精品.Net基础视频教程(1-9)

-------------------------------------
https://www.bilibili.com/video/av8915750?p=64

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第1张图片

常量

参见https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/constants(微软官方)和https://www.runoob.com/csharp/csharp-constants.html

语法:

const   = value;

示例:

const double PI = 3.14159265;//定义圆周率常量
double r = 10;//半径
double c = 2 * PI * r;//求周长
Console.WriteLine("圆的周长为" + c);

枚举
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第2张图片

参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/enum(微软官方)和https://www.runoob.com/csharp/csharp-enum.html

语法:

enum 
{ 
    enumeration list 
};

例如:

enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };

示例-性别枚举:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第3张图片

枚举和string,int之间的转换

枚举转整型
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第4张图片

整型转枚举
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第5张图片

枚举转字符串
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第6张图片

字符串转枚举

使用Enum.Parse方法将字符串转换为枚举(Enum.Parse方法参见https://docs.microsoft.com/zh-cn/dotnet/api/system.enum.parse)
注意Enum.Parse返回的类型是object,还需要转换为指定Enum类型:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第7张图片
Enum.Parse转换时:
I.文本字符串必须在枚举值字符串中存在,否则会抛出异常(例如将"EightDay"转换为Day型枚举--可Day型枚举值中并没有EightDay--则会抛出异常);
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第8张图片
II.数值字符串如果超出枚举值,则保留该数值(例如将"100"转换为Day型枚举,虽然100在枚举值中并不存在,但仍可转换且转换后值为100)
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第9张图片

练习:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第10张图片

结构

参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/struct(微软官方)或https://www.runoob.com/csharp/csharp-struct.html

struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。 下面的示例显示了一个简单的结构声明:

public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

 示例-简单使用枚举

namespace App005_常量_枚举_结构 {
    public enum Gender {//定义性别常量类型
        Unknown,
        Male,
        Female
    }    
    public struct Person {
        public string Name;//名字
        public int Age;//年龄
        public Gender Gender;//性别
    }
    class Program {
        static void Main(string[] args) {
            Person boy;
            boy.Name = "李少白";
            boy.Age = 17;
            boy.Gender = Gender.Male;

            Console.ReadKey();
        }
    }
}

数组

数组是一种数据结构,其中包含许多通过计算索引访问的变量。 数组中的变量(亦称为数组的元素)均为同一种类型,我们将这种类型称为数组的元素类型

参见https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/arrays或https://www.runoob.com/csharp/csharp-array.html

声明数组

声明数组的几种方法:

            //声明数组的几种方法
            int[] arr = new int[10];
            int[] arr2 = {11,12,21,2,3,55,3,3};
            int[] arr3 = new int[5]{ 11, 12, 21, 2, 3};
            int[] arr4 = new int[] { 1, 2, 3, 4, 5 };

以下示例创建 int 元素数组,初始化此数组,然后打印输出此数组的内容:

using System;
class ArrayExample
{
    static void Main() 
    {
        int[] a = new int[10];
        for (int i = 0; i < a.Length; i++) 
        {
            a[i] = i * i;
        }
        for (int i = 0; i < a.Length; i++) 
        {
            Console.WriteLine($"a[{i}] = {a[i]}");
        }
    }
}

示例-求数组的最大值 最小值 总和 平均值:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第11张图片

数组排序

Array.Sort方法:按顺序从小到大排序 参见https://docs.microsoft.com/zh-cn/dotnet/api/system.array.sort
Array.Reverse:反转排序(注意不是逆序排序) 参见https://docs.microsoft.com/zh-cn/dotnet/api/system.array.reverse

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第12张图片

函数/方法
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第13张图片
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第14张图片
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第15张图片

方法/函数参数

out参数/输出参数

示例-使用out参数获取数组中的最小值和最大值:

    class Program {
        static void Main(string[] args) {
            int[] arr = {312,165,123,132,1254,132,132,5,16532,65 };
            int max, min;
            GetMinMaxOfArray(arr,out min,out max);
            Console.WriteLine("数组中最小值 = {0}; 最大值 = {1}",min,max);            
        }
        /// 
        /// 求数组中的最大数,最小数
        /// 
        /// 需要求最大最小值的数组
        /// 返回数组的最小值
        /// 返回数组的最大值
        public static void GetMinMaxOfArray(int[] arr, out int min, out int max) {
            min = arr[0];
            max = arr[0];
            for (int i = 0; i < arr.Length; i++) {
                if (arr[i] < min) {
                    min = arr[i];
                }
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
        }
    }

ref参数/引用参数(按引用传递参数)

示例-使用ref参数交换变量值:

class NumberManipulator
   {
      public void swap(ref int x, ref int y)//交换x,y值
      {
         int temp;
         
         temp = x; 
         x = y;    
         y = temp; 
      }
      
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();

         int a = 100;
         int b = 200;

         n.swap(ref a, ref b);
         
         Console.WriteLine("a 的值: {0}", a);
         Console.WriteLine("b 的值: {0}", b);
         
         Console.ReadLine();
      }
   }

Params可变参数(参数数组)

使用params可变参数可以不必限制住参数个数.

示例-求不定个数的数字之和:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第16张图片

注意:params可变参数(参数数组)必须是方法的最后1个参数.

方法重载

示例-利用重载方法求2个变量相加:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第17张图片

递归

*重载和递归可参考原来的笔记https://blog.csdn.net/ishenjiaming/article/details/99619637

类和对象

*可参考原来的笔记https://blog.csdn.net/ishenjiaming/article/details/99545219和https://blog.csdn.net/ishenjiaming/article/details/103639471

示例-类和对象简单例子:

   class 人类 {
        public string 姓名;
        public int 年龄;
        public string 性别;

        public void 自我介绍() {
            Console.WriteLine("我是{0},今年{1}岁,性别{2}.",姓名,年龄,性别);
        }
    class Program {
        static void Main(string[] args) {
            人类 路人甲 = new 人类();

            路人甲.姓名 = "葫芦娃的爷爷";
            路人甲.年龄 = 88;
            路人甲.性别 = "男";

            路人甲.自我介绍();

            Console.ReadKey();
        }
    }

结果显示

我是葫芦娃的爷爷,今年88岁,性别男.

属性

属性可用于数据校验,判断合法或非法.

示例-属性简单例子:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第18张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第19张图片
静态与非静态

视频https://www.bilibili.com/video/av8915750?p=102

*可参考之前的笔记https://blog.csdn.net/ishenjiaming/article/details/99675080(学蓝鸥C#笔记)和https://blog.csdn.net/ishenjiaming/article/details/103639471(Unity学习笔记)

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第20张图片

构造函数

*参见笔记https://blog.csdn.net/ishenjiaming/article/details/99619637(学蓝鸥C#笔记)

视频https://www.bilibili.com/video/av8915750?p=103

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第21张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第22张图片

重载构造函数

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第23张图片

使用this让构造函数调用其他构造函数

可以节约冗余代码.如下:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第24张图片
例子详见https://blog.csdn.net/ishenjiaming/article/details/103639471(unity学习笔记)

析构函数

详见https://blog.csdn.net/ishenjiaming/article/details/99619637(学蓝鸥C#笔记)

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第25张图片

命名空间

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第26张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第27张图片

方法如下图所示:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第28张图片
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第29张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第30张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第31张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第32张图片

值类型和引用类型

值类型(栈中):变量本身在栈中,值(数据)在栈中
引用类型(堆中):变量本身在栈中,变量的值存储实际数据的内存地址(引用),内存地址(引用)的值即实际数据存在堆中.

二者之间最大的区别
值类型变量有两个元素:变量本身,变量的值:数据;
引用类型变量有三个元素:变量本身,变量的值:内存地址(引用);内存地址的值:数据

*详见https://blog.csdn.net/ishenjiaming/article/details/103609679(Unity学习笔记)和https://blog.csdn.net/ishenjiaming/article/details/99545219(学蓝鸥C#笔记)

字符串

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第33张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第34张图片

字符串的不可变性

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第35张图片

字符串生成后,其值不可改变!给字符串变量赋新值,实质上是在内存中生成1个新字符串,而老的字符串仍旧在内存中,并没有销毁[直到GC销毁它--通常是程序结束].

字符串相当于一个只读char数组,可以通过下标访问数组元素,如下:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第36张图片

字符串和char数组的转换

如果想改变字符串中某个字符,需要先转换为1个新的char数组,然后改变其中元素;再将改变后的char数组转化为字符串,如下:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第37张图片

StringBuilder

可用于大量字符串频繁,高速拼接等操作.

*参见https://blog.csdn.net/ishenjiaming/article/details/103609679(Unity学习笔记)
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第38张图片

假如需要拼接字符串十万次,耗费的时间.如下:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第39张图片

使用StringBuilder拼接字符串十万次耗费的时间如下:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第40张图片
我们发现二者耗费的时间不在同一数量级上!

最后,StringBuilder拼接字符串完成后,我们仍应该将其转化为字符串,所以最后须加上:

Console.WriteLine(sb.ToString());

二者有如此显著不同是因为前者制造了十万个字符串,而后者StringBuilder前前后后(理论上理想状态)只操作一个字符串.

String常用方法

关于英文大小写的

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第41张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第42张图片

如下,输入两个课程英文名称,比较的时候将忽略大小写:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第43张图片

分割字符串
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第44张图片

如下,分割字符串:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第45张图片

再来1个例子:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第46张图片

字符串函数详解
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第47张图片

示例-以下代码屏蔽关键词"老赵",以*号代替:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第48张图片

示例-Substring取子字符串:从Strart索引开始[到End索引结束]:  //[...]代表参数可存在亦可不存在
注意第一个索引从0开始:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第49张图片
以上代码取原字符串的第1号索引至第2号索引结束的子字符串,即"天天".

以下代码演示Stratswith和Endswith方法:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第50张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第51张图片

以下代码演示IndexOf方法,找到返回索引值(注意第一个索引值从0号索引开始),找不到则返回-1:

可以指定从第几号索引开始寻找,下例从源字符串第2号索引字符开始查找:

以下代码演示LastIndexOf方法,它是从字符串末尾开始寻找:

以下代码根据全路径字符串获取文件名: "苍老师苍.wav":

首先找到最后1个"\"(代码使用"\\"因为\\代表\);最后截取最后1个\后面的字符串,即"苍老师苍.wav"
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第52张图片

Trim去掉前后空格(注意不是所有空格);TrimStart去掉前面所有空格;TrimEnd去掉后边所有空格.示例如下:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第53张图片

IsNullOrEmpty判断字符串是否为null或空:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第54张图片

Join方法可以添加分隔符:
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第55张图片

字符串方法总结
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第56张图片

练习

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第57张图片
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第58张图片

-------------------

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第59张图片

----------------
黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第60张图片

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第61张图片

思路:使用split方法得到每行的2个字符串:书名和作者;之后再判断书名是否超10个字符,超过则取前8个加"...";最后加个竖线再加作者名得到新字符串.

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第62张图片

--------------

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第63张图片

第二种方法如下.缺点是只能找单个字符而不能找多个字符组成的词:

黑马C#笔记03:常量,枚举,结构,数组,函数/方法,参数out/ref/param,重载,递归,类和对象,属性,静态/非静态,构造,析构,命名空间,值类型引用类型,字符串,StringBuilder_第64张图片
 

你可能感兴趣的:(C#和.NET学习)