Cool_Breeze 发表于 2021-3-2 11:15

C# 学习笔记 参数使用

Windows 7 没有装 visual studio 有些参数修饰符不兼容
Microsoft (R) Visual C# Compiler version 4.8.3761.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
装了frameWork4.8 提示我这是5.0版本!必须安装 visual studio 才能升级C# 版本吗?
using System;

class Method
{
    static void Main()
    {
      // int x = 101;
      // ValueTransfer(x);
      // x = 101, GetHashCode = 101
      // Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
      
      // Student stu = new Student(){name = "Tim"};
      // x = Tim, GetHashCode = 46104728
      // Console.WriteLine("x = {0}, GetHashCode = {1}", stu.name, stu.GetHashCode());
      // ValueQuote(stu);
      // x = Tom, GetHashCode = 46104728
      // Console.WriteLine("x = {0}, GetHashCode = {1}", stu.name, stu.GetHashCode());
      
      // int x = 100;
      // x = 100, GetHashCode = 100
      // Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
      // ValueQuoteRef(ref x);
      // x = 1, GetHashCode = 1
      // Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
      
      // double x = default(double);
      // x = 0, GetHashCode = 0
      // Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
      // ValueQuoteOut(out x);
      // x = 100, GetHashCode = 100
      // Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
      
      
      // Borrow stu = new Borrow();
      // stu.ShowBook();
      // Book book = new Book();
      // book.title = "C#";
      // 查询书籍名
      // if (stu.Query(ref book))
      // {
            // book.borrow = "A, B, C, GIN";
            // Console.WriteLine("----------更改分割线----------");
      // }
      // else
      // {
            // Console.WriteLine("--------未更改分割线----------");
      // }
      // stu.ShowBook();
      
      // 不定长参数
      // Parameters(1,2,3,4,1,5,5);
      
      double pi = 3.14159666;
      // pi就是this修饰的那个参数
      double rpi = pi.Round(3);
      // 3.14159666 保留 3 位小数后为 3.142
      Console.WriteLine("{0} 保留 {1} 位小数后为 {2}", pi, 3, rpi);
    }
   
    class Student
    {
      public string name {get; set;}
    }
   
    class Book
    {
      public string title{get;set;}
      public string borrow{get;set;}
    }
   
    class Borrow
    {
      // books 存放着每本书的借用着
      Book[] books =
      {
            new Book(){title = "C#", borrow="A"},
            new Book(){title = "C", borrow="A"},
            new Book(){title = "Python", borrow="A, B"}
      };
      
      // ref 一个引用实例
      
      // Book temp = null;
      // public ref Book Query(string title)
      // {
            // for (int i = 0; i < books.Length; i++)
            // {
                // if (title = books.title)
                // {
                  // return ref title;
                // }
            // }
            // return ref temp;
      // }
      // Book temp = null;
      
      // 存储一个book地址的信息抛出去,使外部也能更改
      public bool Query(ref Book book)
      {
            for (int i = 0; i < books.Length; i++)
            {
                if (book.title == books.title)
                {
                  book = books;
                  return true;
                }
            }
            return false;
      }
      
      // 输出books信息
      public void ShowBook()
      {
            for (int i = 0; i < books.Length; i++)
            {
                Console.WriteLine("{0,-10} by {1}", books.title, books.borrow);
            }
      }
    }
   
    // 传值
    static void ValueTransfer(int x)
    {
      x = 100;
      // x = 100, GetHashCode = 100
      Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
    }
   
    // 引用一个自生就是引用类型的值
    static void ValueQuote(Student stu)
    {
      // 可以这样理解
      // 创建一个Student stu 然后将外面的stu 复制给内部的stu, stu(内) = stu(外)
      // 引用的目标地址相同
      stu.name = "Tom";
      // x = Tom, GetHashCode = 46104728
      Console.WriteLine("x = {0}, GetHashCode = {1}", stu.name, stu.GetHashCode());
    }
   
    // ref 参数修饰符 引用传值,[(in 参数修饰符)方法内只读 ]
    static void ValueQuoteRef(ref int x)
    {
      x = 1;
      // x = 1, GetHashCode = 1
      Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
    }
   
    // out 参数修饰符,方法内部必须对参数至少修改一次
    static void ValueQuoteOut(out double x)
    {
      try
      {
            x = Double.Parse(Console.ReadLine());
      }
      catch
      {
            x = 6;
      }
      
      // x = <input>, GetHashCode = <input>
      Console.WriteLine("x = {0}, GetHashCode = {1}", x, x.GetHashCode());
    }
   
    static void Parameters(params int[] array)
    {
      // foreach (var a in array)
      // {
            // Console.WriteLine(a);
      // }
      // array = 1
      // array = 2
      // array = 3
      // array = 4
      // array = 1
      // array = 5
      // array = 5
      for (int i = 0; i < array.Length; i++)
      {
            Console.WriteLine("array[{0}] = {1}", i, array);
      }
    }
}

// 类扩展方法
// 扩展方法必须在顶级静态类中定义
public static class DoubleExtension
{
    // 必须是静态的。第一个参数必须使用 this 修饰符
    public static double Round(this double a, int digital)
    {
      return Math.Round(a, digital);
    }
}

lili2312280 发表于 2021-3-2 11:24

学习大佬啊,不用安装也可以

Cool_Breeze 发表于 2021-3-2 11:30

lili2312280 发表于 2021-3-2 11:24
学习大佬啊,不用安装也可以

看完一节课,总结一下。我去查查怎么升级!

Alex.Merceryj 发表于 2021-3-2 12:25

VS2019社区版本,用.net core吧

Cool_Breeze 发表于 2021-3-2 12:44

Alex.Merceryj 发表于 2021-3-2 12:25
VS2019社区版本,用.net core吧

.net core兼容性更好吗?

Alex.Merceryj 发表于 2021-3-3 08:44

Cool_Breeze 发表于 2021-3-2 12:44
.net core兼容性更好吗?

跨平台的,大趋势。这个c#语言都是通用的,环境比较好
页: [1]
查看完整版本: C# 学习笔记 参数使用