0

{0} 是否代表第一个参数“分子”,{1} 是否代表传递给 writeLine 方法参数的第二个参数“分母”?

另一个问题是为什么方法说参数#1 和#2 是对象?整数是原始数据类型。

我来自 Java 背景,因此方法描述似乎令人困惑。

using System;

    struct Fraction
    {
        public int denominator;
        public int numerator;

        public void Print()
        {
            Console.WriteLine("{0}/{1}", numerator, denominator);
            Console.ReadKey();
        }

    }

    public class structTest
    {
        public static void Main()
        {
            Fraction f; 
            f.numerator = 8;
            f.denominator = 6;

            f.Print();
        }
    }
4

3 回答 3

3

第一个问题:是的。

第二个问题:

在 C# 原语(int、double 等)中,它们只是 .NET 定义类型的别名。这就是为什么它们不是正确的“原语”,因为它们实际上隐藏了标准的类和结构。

等等int的别名Int32也是如此。更多在这里

于 2013-02-12T08:25:46.507 回答
2

是的,你的参数的顺序是根据你的想法,因为接受的重载WriteLineparams object[],这意味着一个对象实例数组,在特殊情况下,项目可以作为最后一个参数集合传递。

WriteLine接受object某些重载,在这种情况下,那是因为 A) 类型可以很好,而且最常见的是,不同并且事先不知道,并且没有泛型重载(同样,这可能会使事情复杂化多个类型),以及 B)它无论如何都会调用ToString对象,并且所有事物都是对象(即重要),并假定该方法的合理实现。

但是,有显式接受、、等的方法的重载。WriteLineintbooldecimaldouble

于 2013-02-12T08:26:32.473 回答
1
  1. 是的。

    {0} 是一个保留位置,用于填充第一个参数中的任何值,{1} 用于第二个参数,依此类推。项目清单

  2. 在 C# 中,一切都是对象。有些是从结构创建的(例如 int、double 等),而许多其他是从类创建的。因此,如果您愿意,您实际上可以执行以下操作:

     int a = new int();
    

    你可以这样做:

     string aString = a.ToString();
    
于 2013-02-12T08:33:44.733 回答