• 定义数组:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){int[] ages1 = {3240,242,34};Console.WriteLine(ages1[2]);int[] ages2;ages2 = new int[10];Console.WriteLine(ages2[2]);int[] ages3;ages3 = new int[] {1,2,3};Console.WriteLine(ages3[2]);int[] ages4;ages4 = new int[4] { 1, 2, 3, 4 };Console.WriteLine(ages4[2]);int[] intArray = new int[9];//0char[] charArray = new char[9];//0float[] floatArray = new float[9];//0string[] stringArray = new string[9];//nullconst int arraySize = 5;//const 必须要有int[] myIntArray = new int[arraySize] {1,2,5,4,9}; }}
}
  • 遍历数组:三大循环+foreach();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){int[] intArray = {0,1,2,3,4,5,6,7,8,9};//0for (int i = 9; i >= 0; i--){Console.Write(intArray[i] + " ");}Console.WriteLine();foreach (int temp in intArray)//只能正序输入和读取{Console.Write(temp + " ");}Console.WriteLine();string str = Console.ReadLine(); ;foreach (char ch in str){if (ch < '0' || ch > '9'){Console.Write(ch + " ");}}Console.WriteLine();Console.ReadKey();}}
}
  • 多维数组:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){double[,] hillHeight = new double[3, 4];double[,] hillHeight1 = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };foreach (double height in hillHeight1){Console.Write("{0} ",height);}Console.WriteLine();Console.ReadKey();}}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace test
{class Program{static void Main(string[] args){//一维数组定义与初始化  int[] one1 = new int[] { 3, 2, 1 };//第一种方式  int[] one2 = { 3, 2, 1 };      //第二种方式  int[] one3;                    //第三种方式  one3 = new int[] { 3, 2, 1 };//二维数组定义与初始化  //不规则二维数组  int[][] array = new int[2][];array[0] = new int[3];array[0][1] = 11;array[0][2] = 12;array[1] = new int[] { 1, 2, 3, 4, 5 };//或int[][] array = new int[2][] { new int[] {0,11,12 }, new int[] {1,2,3,4,5 }};  Console.WriteLine("不规则二维数组:  ");for (int i = 0; i < array.Length; i++){foreach (int j in array[i]){Console.Write(j + "   ");}Console.WriteLine();}//固定长度的矩阵数组  int[,] arrray1 = new int[2, 5] { { 9, 9, 9, 9, 0 }, { 0, 0, 9, 0, 0 } };Console.WriteLine("规则二维数组输出方法一:  ");for (int ii = 0; ii < 2; ii++)                        //输出方法一  {for (int j = 0; j < 5; j++){Console.Write(arrray1[ii, j] + "   ");}Console.WriteLine();}Console.WriteLine("规则二维数组输出方法二:  ");foreach (int j in arrray1)//arrray.length=10;      //输出方法二  {Console.Write(j + "   ");}Console.WriteLine();int[,] Array = new int[3,5];for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){Array[i,j] = Convert.ToInt32(Console.ReadLine());}}for (int i = 0; i < 3; i++)// 输出方法三    {for (int j = 0; j < 5; j++){Console.Write(Array[i, j]);}Console.WriteLine();}Console.WriteLine();Console.ReadLine();}}
}
  • 字符数组:
    一个字符串可以当做一个字符数组,str[i]访问某个字符元素,但要注意的是字符数组只能访问不能修改!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string name = "y y x";//name = "yyx" + "123";//name = "" + 45;//"45"//一个字符串可以当做一个字符数组,str[i]访问某个字符元素,但要注意的是字符数组只能访问不能修改!Console.WriteLine(name.Length);for(int i = 0; i < name.Length; i++){Console.WriteLine(name[i]);}for (int i = name.Length-1; i >=0 ; i--){Console.WriteLine(name[i]);}Console.ReadKey();}}
}
  • 字符串的操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string name = "  Yin Yu Xian ";string str = name.ToLower();//方法不改变原字符串,只是定义了一个新的字符串。Console.WriteLine(name+"-"+str);string str1 = name.ToUpper();//可用于验证码不区分大小写。Console.WriteLine(name + "-" + str1);string str2 = name.Trim();//可用于对用户名的验证有无前后空格并吃掉前后空格。//TrimeStart(),只去前面的空格。TrimeEnd(),只去后面的空格。Console.WriteLine(name + "-" + str2);name.Split();Console.ReadKey();}}
}
  • 字符串的分割-Split();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string name = "YinYuXian,ZhangSan,LiShi";string[] strArray=name.Split(',');foreach(string str in strArray){Console.WriteLine(str);}Console.ReadKey();}}
}
  • C#里面的StringBuilder工具:频繁使用字符串拼接的时候可以用StringBuilder。

简介:
StringBuilder 最早出现在JDK1.5,是一个字符拼接的工具类,它和StringBuffer一样都继承自父类AbstractStringBuilder,在AbstractStringBuilder中使用char[] value字符数组保存字符串,但是没有用final关键字修饰,所以StringBuilder是可变的。

性能:
StringBuilder 对字符串的操作是直接改变字符串对象本身,而不是生成新的对象,所以新能开销小。
与StringBuffer相比StringBuilder的性能略高(15%~30%),StringBuffer为保证多线程情况下的安全性(synchronize加锁)而牺牲了性能,以时间来换取安全。而StringBuilder则没有保证线程的安全,从而性能略高于StringBuffer。

使用场景:
频繁使用字符串拼接的时候可以用StringBuilder(推荐)或者StringBuffer。

用法:
一、StringBuilder对象的创建(下文builder是StringBuilder创建出来的对象)

1.常规创建

StringBuilder builder = new StringBuilder();

2.在创建的时候添加初始字符串

StringBuilder builder = new StringBuilder("abc");

3.在创建的时候添加初始长度

StringBuilder builder = new StringBuilder(初始长度);

这里需要注意的是如果在StringBuilder的对象创建时没有指定长度,StringBuilder对象会自动生成一个16位的字符数组。

二、StringBuilder对象的方法

数据的种类可以有:

Object
String
StringBuffer
CharSequence
char[]
boolean
char
int
long
float
double

1.builder.append() //作用:追加数据。

builder.append("just");

在加入新字符串时,不会在内存中新开辟字符串空间,只是给原有的字符串尾部加入新字符串。

2.builder.insert()//作用:向指定位置插入数据。

builder.insert(0, "you");

每次加入新字符串之后都会改变字符串中每个字符的地址,插入后原始指定位置的数据向后移。

3.builder.deleteCharAt()//作用:删除指定位置的数据。

builder.deleteCharAt(index);

4.builder.delete( )//作用:删除指定范围的数据左闭右开。

builder.delete(beginIndex, endIndex);

范围:从开始位置到结束位置的前一个位置。

5.builder.toString()//作用:将对象中的数据以字符串的形式返回。

6.builder.reverse()//作用:将对象中的数据反转。

注意
原始数组长度不够时,在传入新字符串时会增加数组长度,并将原来的数据传到新数组中,反复添加遇到这种情况时会对内存造成损耗。为了避免这种情况,可以在创建时提前给StringBuilder对象设置长度:

StringBuilder builder = new StringBuilder.//(初始长度)。

有关字符串的拼接,普通拼接和使用工具StringBuilder的对比:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string str = "";for(int i = 0; i < 10; i++){str += "a";}Console.Write(str + " ");Console.WriteLine();Console.ReadKey();//StringBuilder builder = new StringBuilder();StringBuilder builder = new StringBuilder(10);Console.Write(builder.Length);//输出为0。Console.WriteLine();Console.ReadKey();for (int i = 0; i < 10; i++){builder.Append("b");}Console.Write(builder + " ");Console.WriteLine();Console.ReadKey();str = builder.ToString();Console.Write(str + " ");Console.WriteLine();Console.ReadKey();}}
}
  • Substring C#中截取字符串主要借助Substring这个函数。
    (1)string arr.Substring(int startIndex,int length);
    说明:如果传入的参数是两个长整参数,第一个参数指字符串的起始位置,也就是开始截取的位置,第二个是截取的长度。
    (2)string arr.Substring(int startIndex);
    说明:如果传入的参数为一个大于等于0的长整数,则以这个长整数的位置为起始位置,截取剩余全部字符为子字符串。

代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class SubStringTest{static void Main(string[] args)  {string oriString = "Hello,Kitty!"; //原始字符串string subString = ""; //截取后的字符串//输出:HesubString = oriString.Substring(0, 2);   //从第一个字符开始,截取2个字符Console.WriteLine(subString); //输出:llosubString = oriString.Substring(2,3);    //从第一个‘l’开始,截取3个字符  Console.WriteLine(subString); //输出:Kitty!subString = oriString.Substring(6);   //从第七个字符开始截取,到原始字符串结束 Console.WriteLine(subString); }  }
}
  • 深入理解C# 中 “$” 符号的作用以及用法

一、C#中$的作用
谈及这个$,其实它是C#6.0语法中模板字符串的一种写法,什么是模版字符串?还记得你们用过的格式化字符串吗?string.Format() 这个方法,是最常用的方法之一。

那$又是什么呢?它是为了替代string.format()的,原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题。

KaTeX parse error: Expected 'EOF', got '#' at position 31: …mat(),可以把字符串中的C#̲变量{}包含起来达到识别C#变…"{id}“;也支持表达式,使用 " ( 你的表达式 ) " ;或者方法的执行,使用 "{(你的表达式)}";或者方法的执行,使用 "(你的表达式)";或者方法的执行,使用”{(方法)}"。

二、C#中KaTeX parse error: Expected 'EOF', got '#' at position 6: 的用法 C#̲ 中符号的作用是C#6.0中新出现的一个特性,也即是字符串的拼接优化。

语法格式:$“string {参数}”

解释:以$符号开头开始字符串,其中以{}来进行传参,可以多个参数累加。

例如:var results = $“Hello {Name}”;

三、关于$的示例讲解
var str = string.Format(“我的名字叫{1},我今年{1}岁。”, “张三”, 23);
Console.WriteLine(str);

这是我们使用string.format()的写法,下来我们使用$改写一下。

var str = $“我的名字叫{“张三”},我今年{23}岁。”;
Console.WriteLine(str);

通过上面这个案例,我们发现,现在使用$代码简洁,可读性强。

可能有些朋友觉得效果不太明显,那么请看下面这个案例:

var name = "张三";
var age = 23;
var sex = "男";
var message = string.Format("我叫{0},我的年龄为{1},我的性别是{2}", name, age, sex);
var show = $"我叫{name},我的年龄为{age},我的性别是{sex}";
Console.WriteLine(message);
Console.WriteLine(show);
Console.ReadKey();

如果还感受不到,那么请你试想一下:如果我们要操作的数据很多,假设它是一个多条的SQL语句,那么在长篇字符串中定位索引,那是不是很累啊!纵使你写对了索引(没写对还得一个个检查、修改),好不容易完工了。但下一个需求让你加两个参数,你的索引位置又得变,还得在万码丛中查找你原来索引在哪里的,是不是很恶心?

哈哈,不用沮丧,此时C#6.0模版字符串就可以闪亮登场啦!

怎么用?总结一下,就是在字符串的双引号前面加一个 $ 符号,在需要使用变量的地方用{变量}就可以了。这个在我们上面的案例中,也有体现。

四、关于$的补充知识
正如我们上面所说,{变量}表示在字符串中输出变量的值,当然{}中间也可以是一个表达式或者方法的执行。

$“我的姓名是{GetName()}”;
$“name的类型是{name.GetType()}”;

如上,这样就很方便,帅气了!那么变量和索引可以混用吗?当然也是可以的,如下:

var name = "张三";
var age = 23;
var sex = "男";
var show = string.Format($"我是{name},今年{age},家住在{{0}}", sex);
Console.WriteLine(show);

要注意的是需要用两次大括号 {{}} 将索引包含起来,也就是这样的形式,{{索引}}。因为一次是输出表达式,两次就转义成普通的占位符了,这点一定要注意!

  • c#——var
    var 是c#语言新增的一种方式,可用于变量名前,让变量通过赋值来自动匹配数据类型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace test
{class Program{static void Main(string[] args){const float interestRate = 0.35f;int money = 7;string name = "令狐冲";float moneyAll = money * interestRate + money;var a = 12;var my = "gouyizhou";var b = 1.15;Console.WriteLine(money + moneyAll + " " + name);Console.WriteLine(a + b +" "+my);Console.ReadKey();}}
}

上面代码中通过 var a = 12;此时并未声明a 的数据类型是int,而是通过我们后面赋值的12系统自动匹配他是int类型。同样下面的 var my = “gouyizhou”,使得系统匹配my的数据类型是string。var b = 1.15也是同理。

转战C#---day2相关推荐

  1. PHPer转战Android的学习过程以及Android学习

    原文作者: eoeadmin 原文地址: http://my.eoe.cn/shuhai/archive/19684.html ------------------------------------ ...

  2. 软件工程Alpha冲刺day2

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺(day2) 今日进度 成员姓名 ...

  3. Day2 - Python基础2作业【文件操作--购物车程序(用户操作及商户操作)】

    1 # ----user.txt---- 2 3 {'已购商品': '', '消费记录': '', '余额': 0} 4 5 6 # ----commodity.txt---- 7 8 iPhone, ...

  4. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  5. .Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译

    原文:.Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译 apk(android package)就是我们安卓系统的安装文件,可以在模拟器和手机中直接打开安装,从项目中打包 ...

  6. .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化

    原文:.Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化 我们知道资源被注册到R.java我们通过R.java就可以读取到界面中的组件.跟我们.net一样,通过ID来读取组件 ...

  7. Alpha冲刺Day2

    冲刺Day2 一.站立式会议计划 分组讨论研究:较好的掌握MYSQL的使用,以及Android Studio图形化界面设计的学习同步进行. 完成设计数据库架构,进阶版. 登录.注册界面的设计. 能从同 ...

  8. ZJOI2019 Day2 游记

    emmm,一直没有更新不是因为退役了自闭什么的,只是单纯比较懒.写游记很累的. 这次余姚之旅中我似乎并没有怎样焦急和兴奋,回想起来,我甚至比一试时要平静得多. 是因为挫折让人有些长大了吗? 二试讲课时 ...

  9. 【从零开始学BPM,Day2】默认表单开发

    [课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第二天课程] Step 1 软件下载:H3 BPM10.0全开 ...

最新文章

  1. MySQL学习总结(三)索引
  2. 求职面试的十大错误,你犯过吗? | 每日趣闻
  3. 几种适合开发用的在线编辑器-推荐及下载
  4. node+读写文件_Node之父重构的Deno终于发布了,它终究会取代Node吗?
  5. 真正能挣钱的分析模型有哪些?这三个你绝对要学会
  6. 【Teradata】系统吞吐量重要参数QPS(TPS)、并发数、响应时间
  7. sql sum求和 值小于不显示_mysql中sum求和等类似方法关于null值的处理
  8. JS代码实现浏览器切换页面时网页标题动态切换
  9. Qt 学习之路 :访问网络(4)
  10. 爱情六十六课,自我救赎
  11. java 读取yaml配置文件
  12. 计算机知识脑筋急转弯,10道智力题图片及答案大全|2018年朋友圈最烧脑的10道智力题 附答案_最火软件站...
  13. python dataset用法_dataset 用法(2)
  14. 单片机外文参考文献期刊_求有关单片机的中英文参考文献
  15. 华为nova2s应用计算机,华为nova2s 如何打开多个应用 | 手游网游页游攻略大全
  16. 俄罗斯方块Tetris Beat for Mac(休闲益智游戏)
  17. 如何搭建经营分析看板
  18. 使用镜像服务站下载CentOS安装包
  19. 设定PCB的区域(AD18)
  20. html千年之恋的图片,HTML+CSS+JavaScript项目6 “千年之恋”注册页面制作_0525_连蕊.pptx...

热门文章

  1. Suricata详解
  2. suricata 各个线程干的事情 -- WorkerThread
  3. 中台风险分析-数学期望的现实意义
  4. Museui 图标速览,再也不用担心网页打不开了
  5. Linux 比较两个文件命令
  6. DiskGenius无损换分区表类型为GUID格式或MBR格式
  7. 微信 updateAppMessageShareData ios分享不出来标题内容
  8. vivado xdc使用说明
  9. 解决MacBook合盖锁屏
  10. 企业最佳Node.js 应用案例分享