试图了解变量和基本控制台命令

时间:2020-07-19 05:16:54

标签: c# variables console.writeline

我正在学习Solo Learn的基础课程,并且一直在研究变量。我试图弄清楚调用字符串是如何工作的,并具有两个简单的代码序列。第一个使用占位符标记并产生:“ x = 400,y = 60”。

第二个是:“({{0} {1} {2} {3},你好,我叫Inigo Montoya,你杀了我父亲。准备死。)”

第二,除非我在“ output =”

之后使用“()”,否则该程序将无法运行。

我也不明白为什么它会打印占位符,然后按名称打印字符串,而不是将它们用作变量引用,即使我将其更改为var也不会在第一种方法中发生。

如果我将“输出”设为字符串,则会出现错误:“无法隐式将字符串输出转换为字符串。”

最后三个“使用”。顶部的行不是我执行Windows窗体甚至.NET Framework控制台应用程序时通常的行,而是基本的“ hello world”!当我尝试使用.NET框架时,它似乎根本不起作用。

任何人都可以帮助澄清这个奥秘并给我一些见解吗?我觉得我真的很了解这里发生的基本概念。

using System;
using System.Runtime.CompilerServices;
using System.Security.Cryptography.X509Certificates;

namespace PrintingTextSL
{
    class Program
    { 
       static void Main(string[] args)
       {
            int x = 400;
            int y = 60;
            int z = 9000;
        
            Console.WriteLine("x = {0}, y = {1}", x, y);
        
       }
   }
}

namespace PrintingTextSL
{
    class Program
    {
        static void Main(string[] args)
        {
            
            string PoliteGreeting = "Hello, ";
            string Name = "My name is Inigo Montoya ";
            string RelevantPersonalLink = "You killed my father. ";
            string ManageExpectations = "Prepare to Die.";
        
            var output = ("{0} {1} {2} {3}", PoliteGreeting, Name, RelevantPersonalLink, ManageExpectations);
        
            Console.WriteLine(output);
        
        
        }
    }
}

2 个答案:

答案 0 :(得分:2)

使用一个或多个参数“格式化”字符串的功能是WriteLine类的Console方法的功能。顺便说一句,您已经验证了它可以正常工作:

        Console.WriteLine("x = {0}, y = {1}", x, y);

但是,第二次尝试是(无效的)表达式本身,不涉及任何支持它的函数或方法。 (实际上是有效的tuple,但与您要求的主题无关。)

如果愿意,您可以执行非常相似且完全有效的操作,即所谓的"string interpolation"

        string output = $"{PoliteGreeting} {Name} {RelevantPersonalLink} {ManageExpectations}";
    
        Console.WriteLine(output);

基本上,您可以编写自己的字符串格式,也可以直接在字符串本身内使用变量(或表达式)。只需将它们放在方括号中即可。

根据文档中的说明:

要将字符串文字标识为插值字符串,请在其前面添加 与$符号。 $和之间不能有空格 ”,它开始一个字符串文字。

答案 1 :(得分:2)

var output = ("{0} {1} {2} {3}", PoliteGreeting, Name, RelevantPersonalLink, ManageExpectations);

只是以下各项的缩写:

var output = new Tuple<string,string,string,string,string>("{0} {1} {2} {3}", PoliteGreeting, Name, RelevantPersonalLink, ManageExpectations);

要使其正常工作,您应该这样做:

Console.WriteLine(output.Item1,output.Item2,output.Item3,output.Item4,output.Item5);
相关问题