类型转换、三元表达式、枚举、随机数

本文介绍了C#中的类型转换方法,包括使用Convert.ToInt32和TryParse进行安全转换;讲解了如何生成随机数;演示了三元表达式的用法;并详细解释了枚举类型的定义及其与int和string类型的转换。

1类型转换:

 //将string类型的123转为int类型的123
            //方式1
            int number1 = Convert.ToInt32("123");
            Console.WriteLine(number1);
            //方式2
            int number2 = int.Parse("456");
            Console.WriteLine(number2);
            //转换失败
            //int number3 = Convert.ToInt32("123aaa"); //"123abc"无法转换为int类型
            //Console.WriteLine(number3);
            Console.ReadKey();

 

 

 //所有的类型都能够转换成string类型,调用ToString()
            int n1 = 11 ;
            Console.WriteLine(n1);
            Console.WriteLine(n1.GetType());
            string s1 =n1.ToString();
            Console.WriteLine(s1.GetType());

            decimal n2 = 5000m;
            Console.WriteLine(n2);
            Console.WriteLine(n2.GetType());
            string s = n2.ToString();
            Console.WriteLine(s.GetType());

            Console.ReadKey();

 

//TryParse判断是否转换成功,输出false或true
class Program { static void Main(string[] args) {
       //方式一 int num; bool b = int.TryParse("123abc", out num); Console.WriteLine(num);//思考为什么是int类型的0,后面却是bool类型的false Console.WriteLine(b); //方式二 int result; bool c = MyTryParse("234",out result); Console.WriteLine(c); Console.ReadKey(); }
    //TryPares的本质如下 public static bool MyTryParse(string s, out int result) {
      //out 必须在方法中赋值,计算后的新数据又被带出方法 result = 0; try { result = Convert.ToInt32(s); return true; } catch { return false; } } }

 

2随机数

 //产生随机数
                //1、创建能够产生随机数的对象
                Random r = new Random();
                //2、让产生随机数的这个对象调用方法来产生随机数
                //3产生一个1-100内的随机数
                int rNumber = r.Next(1, 100);
                Console.WriteLine(rNumber);
                Console.ReadKey();

 

3、三元表达式

语法: 表达式1?表达式2:表达式3; 表达式1一般为一个关系表达式。

如果表达式1的值为true,那么表达式2的值就是整个三元表达式的值。

如果表达式1的值为false,那么表达式3的值就是整个三元表达式的值。

注意:表达式2的结果类型必须跟表达式3的结果类型一致,并且也要跟整个三元表达式的结果类型一致。

   //例1    
     int x = 1 > 2 ? 11:12; int x2 = 1 < 2 ? 11 : 12; int y = 1 ==1 ? 11 : 12; Console.WriteLine(x); Console.WriteLine(x2); Console.WriteLine(y); Console.ReadKey();   //例2 //计算两个数字的大小 求出最大的 //Console.WriteLine("请输入第一个数字"); //int n1 = Convert.ToInt32(Console.ReadLine()); //Console.WriteLine("请输入第二个数字"); //int n2 = Convert.ToInt32(Console.ReadLine()); //int max = n1 > n2 ? n1 : n2; //Console.WriteLine(max); ////相当于 //if (n1 > n2) //{ // Console.WriteLine(n1); //} //else //{ // Console.WriteLine(n2); //} //Console.ReadKey();

 

4枚举
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
........
}
public:访问修饰符。公开的公共的,哪都可以访问。
enum:关键字,声明枚举的关键字
枚举名:要符合Pascal命名规范
将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
枚举就是一个变量类型 ,类似于int double  string  decimal.只是枚举声明、赋值、使用的方式跟那些普通的变量类型不一样。
我们可以将一个枚举类型的变量跟int类型和string类型互相转换。
枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换。
当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来。
枚举同样也可以跟string类型互相转换,如果将枚举类型转换成string类型,则直接调用ToString().
如果将字符串转换成枚举类型则需要下面这样一行代码:
(要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串");
如果转换的字符串是数字,则就算枚举中没有,也会不会抛异常。
如果转换的字符串是文本,如果枚举中没有,则会抛出异常。

 

namespace _02Gender
{
    //声明了一个枚举,取名 Gender
    public enum Gender
    {
        男,
        女
    }

    public enum Day
    {
        星期一 =0,
        星期二 =1,
        星期三 =2,
        星期四 =3,
        星期五 =4,
        星期六 =5,
        星期日 =6
    }
    class Program
    {

        static void Main(string[] args)
        {


            Gender gender1 = Gender.男;
            Console.WriteLine(gender1);
            Gender gender2 = Gender.女;
            Console.WriteLine(gender2);
            //枚举一般用于限定输入,避免同一意思不同的表达带来的混乱。
            //例如“男人”,“爷们儿”,“小伙子”,“man”....

             Day  Monday = Day.星期一;
            Console.WriteLine(Monday);
            Console.WriteLine((int)Monday);
            Console.WriteLine(Day.星期一);
            Console.WriteLine((int)Day.星期一);
            Console.ReadKey();


       //枚举详情
            //http://www.cnblogs.com/kissdodog/archive/2013/01/16/2863515.html
} }

 

转载于:https://www.cnblogs.com/hao-1234-1234/p/6071649.html

### 如何在 C# 中使用 Lambda 表达式生成随机数 Lambda 表达式本身并不直接提供生成随机数的功能,但它可以作为函数的一部分来实现这一目标。可以通过结合 `Random` 类和 Lambda 表达式完成此操作。 以下是具体示例: #### 示例代码 ```csharp using System; class Program { static void Main() { Func<int> generateRandom = () => new Random().Next(1, 100); // 定义一个无参的 Lambda 表达式[^2] Console.WriteLine($"Generated random number: {generateRandom()}"); // 调用 Lambda 表达式并打印结果 } } ``` 上述代码定义了一个返回整数值的 Lambda 表达式 `generateRandom`,其功能是从范围 `[1, 100)` 内生成一个随机数。这里需要注意的是,每次调用 `new Random()` 可能会因为时间间隔过短而生成相同的种子值,从而导致重复的结果。为了避免这种情况,建议将 `Random` 对象实例化一次,并在整个程序生命周期中重用它。 改进后的版本如下所示: #### 改进版代码 ```csharp using System; class Program { private static readonly Random _random = new Random(); // 创建单例 Random 实例 static void Main() { Func<int> generateRandom = () => _random.Next(1, 100); // 使用已有的 Random 实例[^3] Console.WriteLine($"Generated random number: {generateRandom()}"); } } ``` 在这个改写版本中,`_random` 是一个静态字段,在整个应用程序运行期间只初始化一次。这样能够有效减少因频繁创建新对象而导致的潜在问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值