解决 使用结构

罗伯特·NZ

活跃的成员
已加入
2020年6月26日
留言内容
34
编程经验
Beginner
我在使用结构时遇到麻烦。为什么这样不起作用:-
C#:
        Changes Changed = new Changes();
        Changed.Skip = true;
        struct Changes
        {
            public bool Skip;
            public bool EMPNO;
        }
线"Changed.Skip = true;被以下消息拒绝:-
IDE1007当前上下文中不存在名称“ Changed”
IDE1007当前上下文中不存在名称“ Changed.Skip”
通过研究,我发现 这个网站 我通过发布以下代码将他们的struct示例替换为我的代码:-
C#:
using System;               
public class Program
{
    public static void Main()
    {
        Changes Changed = new Changes();
        Changed.Skip = true;
        Console.WriteLine(Changed.Skip);
        Console.WriteLine(Changed.EMPNO);
    }
}
struct Changes
{
    public bool Skip;
    public bool EMPNO;
}
这完美地工作,产生了预期的结果
True
False
我尝试将我对Change的定义移动到与该代码结构匹配的位置,首先遵循包含Changes的类Changed = new Changes();,然后移至该对象的末尾
C#:
namespace MyJSv
{
    
}
在所有情况下,我从这些语句的第二条得到两条IDE1007消息,但是第一条没有错误。如果我写"Changed."没有Intellisense列表。
C#:
        Changes Changed = new Changes();
        Changed.Skip = true;
 

罗伯特·NZ

活跃的成员
已加入
2020年6月26日
留言内容
34
编程经验
Beginner
我完全不同意。除非我缺少任何东西,否则VB会出于完全相同的原因而拒绝等效代码。
我完全不同意。除非我缺少任何东西,否则VB会出于完全相同的原因而拒绝等效代码。
我在本主题的前面给出了这个示例。这些不相等吗?
C#:
        bool Changed_Skip = false;
        Changed_Skip = true;

VB.NET:
        Dim Changed_Skip As Boolean = False
        Changed_Skip = True
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,506
地点
悉尼,澳大利亚
编程经验
10+
我在本主题的前面给出了这个示例。这些不相等吗?
C#:
        bool Changed_Skip = false;
        Changed_Skip = true;

VB.NET:
        Dim Changed_Skip As Boolean = False
        Changed_Skip = True
是的,它们是等效的,并且它们出于相同的原因在相同的地方工作或失败。

1596598388695.png


In both cases, the code is valid inside a method but is invalid 在类型内但在方法外 because only declarations are allowed at that scope. The assignment is invalid at the class level in both cases for the same reason.
 

罗伯特·NZ

活跃的成员
已加入
2020年6月26日
留言内容
34
编程经验
Beginner
是的,它们是等效的,并且它们出于相同的原因在相同的地方工作或失败。
In both cases, the code is valid inside a method but is invalid 在类型内但在方法外 because only declarations are allowed at that scope. The assignment is invalid at the class level in both cases for the same reason.
你说的没错。那真的很微妙。我花了将近15年的时间使用ASP.NET和VB.NET,却从未正确理解两者之间的区别"inside a type" and "inside a method"。我编写的几乎所有代码都在一个方法中,几乎没有机会编写代码"在类型内但在方法外"在表单或ASP.NET应用程序中。

我真的相信有必要使用该教程"Learning C# after VB",如果不存在,那么在我发展C#专业知识的未来几个月中,我将自己生产它。这是要约。如果我开始写这篇文章,MS的任何人有兴趣与我合作,以期成为MS文档的一部分。如果您想查看我的文档的质量,请查看 用户指南语言参考 的部分 MANASYS爵士乐帮助
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,504
地点
弗吉尼亚州切萨皮克
编程经验
10+
几乎没有机会编写代码"在类型内但在方法外"在表单或ASP.NET应用程序中。
这意味着您只能通过使用WinForms或WebForms Designer来严格限制自己,并且只能在双击控件并将代码放入事件处理程序后才添加代码。如果这个含义是正确的,那么这还将得出这样的结论:编写的代码很可能使用可视控件作为数据模型,并且业务逻辑在各种事件处理程序的代码中交织在一起。

这不再是现代代码的编写方式。不再以现代C ++编写为带有类的C的方式,现代.NET应用程序(无论C#,VB.NET,F#或IronPython)都试图保持数据模型,业务逻辑和可视化之间的分离显示。是的,博客文章和玩具应用程序可能仍将这些元素融合在一起,但是博客文章或玩具应用程序的重点通常是展示一种特定的技术,而不是将其作为生产就绪代码的示例。
 

罗伯特·NZ

活跃的成员
已加入
2020年6月26日
留言内容
34
编程经验
Beginner
这意味着您已经严重限制了自己...
你可能是正确的。我这种情况的某些方面可能相对不常见:我曾经是大型机时代的开发人员(PL / I,COBOL和MVS(现在称为ZOS)),然后开了一家软件公司,开发大型机,然后是Unix和PC软件(MS- DOS,然后是Windows 3.11 => 95 => 98 =>NT等),然后我卖掉了这家公司,成为一名IT顾问,就公司的系统要求向他们提供建议,并管理项目团队以交付这些信息。我意识到Visual Studio开发与打孔卡和批处理编译的世界大不相同,因此我决定自学现代编程,因此我从ASP.NET应用程序开始(家庭网络),现在拥有超过1500万个家族历史记录。只有通过做一些真实的事情来学习,课堂练习是肤浅的。然后我退休了。当有人要求购买我的原始大型机(富士通)产品的IBM版本时,我抓住了它,因为我有点无聊,这导致 MANASYS爵士乐,这是Windows Forms应用程序,可为大型机用户提供现代化的编程工具。在此期间,我一直在自己工作,并从教科书,论坛和Google学习了Visual Studio / VB.NET编程。您以为我已经在事件处理程序中编写了大多数代码是错误的:MANASYS的几乎所有代码都在后端语言解析器和代码生成器中。但是,您建议我限制自己是对的,并且我肯定犯了一些错误,例如使用List,因为那时我不了解LinkedList或Dictionary。我很好地理解了分离数据模型,业务逻辑和可视化显示的问题,自大型机时代以来我就一直在处理此问题,并且您会在MANASYS的内部设计中看到这一点。

其他方面也很常见。像所有开发人员一样,一旦我掌握了ASP.NET和VB.NET的基本概念,我的学习就会直接针对"How do I do xxxx?"我们都承受着时间的压力,一旦找到了可以使用的东西,便会使用它,我们不会读到所有其他不需要立即使用的方法和属性,或者从X派生的类的细微差别与从Y派生的类相比,很多文档都是令人发指的,是从开发人员的角度出发,而不是从想要实现某些目标的用户的角度出发。我已经仔细研究了一些课程描述页面,但仍然找不到"我什么时候应该使用这个?怎么样?"

因此,我愿意与Microsoft的某人合作开发我建议的教程。通过扩大我对所使用技术的知识,这将使我受益,而带来令人遗憾的是缺乏用户视角,这将使MicroSoft受益。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,504
地点
弗吉尼亚州切萨皮克
编程经验
10+
我的理解是这里有1个或2个MVP或以前的MVP。他们也许能够为您提供Microsoft的正确联系人以进行写作。我以前在那工作的时候,我认识的三位技术作家要么退休,要么换了职业,否则我会做个介绍。

很抱歉,如果您正在编写的文档是用这种方式编写的。对我来说,它们写得很好。好吧,至少是在2005年左右之后编写的文档。在此之前,是的,MSDN文档实际上非常差。我也会接触到的这三个人是通过更改文档编写方式帮助MS扭转局面的一些人。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,504
地点
弗吉尼亚州切萨皮克
编程经验
10+
MANASYS的几乎所有代码都在后端语言解析器和代码生成器中。
如果这是真的,那么您将不会出现几乎所有代码都在方法内部的情况。是的,大多数将在方法内部,但在某些地方您可能会遇到与该线程开始时相同的情况。
 
最佳 底部