VB 下面程序中的 vData是啥意思或者从哪来 程序里面没有个他赋值或定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB 下面程序中的 vData是啥意思或者从哪来 程序里面没有个他赋值或定义相关的知识,希望对你有一定的参考价值。

Private Property Let Meter_CommAddr(ByVal vData As Byte)
mvarCommAddr = vData
End Property

MeterObj(intCount + 1).DropSta = 1调用
Private Property Get Meter_DropSta() As Single
Meter_DropSta = mvarDropSta
End Property
这个程序吗
还是调用
Public Property Get DropSta() As Single
End Property 这个

您好,你的程序作如下分解
vData 直接是这个函数Meter_CommAddr()函数的一个参数,它是由(ByVal vData As Byte)这一句来定义,是字节型(0-255),它的值是在调用这个函数时给的,

列如调用这个函数
Meter_CommAddr(100)
那这个100会放在vData变量中,这时vData=100,而这个函数里面只有一句
mvarCommAddr = vData,这句的意思是说把vData的值(100)传给变量mvarCommAddr.
最后mvarCommAddr里面的值是100.

再如:Meter_CommAddr(88),当运行这句函数代码后,mvarCommAddr的值是88
------------------------------------------------------------------------------------------
下面的MeterObj(intCount + 1).DropSta = 1调用的是
Public Property Get DropSta() As Single
End Property
参考技术A 属性Meter_CommAddr的设定值
对应的还应该有一个
Private Property Get Meter_CommAddr() As Byte
Meter_CommAddr = mvarCommAddr
End Property追问

MeterObj(intCount + 1).DropSta = 1调用的是
Public Property Get DropSta() As Single
End Property 这个
还是Private Property Get Meter_DropSta() As Single
Meter_DropSta = mvarDropSta
End Property
Private Property Let Meter_CommAddr(ByVal vData As Byte)
mvarCommAddr = vData
End Property

Meter_CommAddr脸面的 下划线 相当于任何字母?

追答

MeterObj(intCount + 1).DropSta = 1调用的应该是
Public Property Let DropSta(.....)
.....
End Property

晕了!这个配置值从哪来的?

如果有同事问你,数据库连接串的值和appsettings.json配的不一样,从哪来的?你能回答的出来吗?

配置读取顺序

ASP.NET Core 中的配置是使用一个或多个配置提供程序执行的,配置提供程序使用各种配置源从键值对读取配置数据。

ASP.NET Core 提供了大量可用的配置提供程序,这还不包括可以自定义配置提供程序。

添加配置提供程序的顺序很重要,因为后面的提供程序添加的配置值将覆盖前面的提供程序添加的值。

配置提供程序的典型顺序为:

  • appsettings.json

  • appsettings.Environment.json

  • 用户机密

  • 环境变量

  • 命令行参数

假如,appsettings.json配置了开发环境的数据库连接串,appsettings.Production.json配置了生产环境的数据库连接串;管理员密码仅配置在用户机密中。

最终生产环境的配置为:

来源
数据库连接串appsettings.Production.json
管理员密码用户机密

分析

从IConfigurationRoot 接口的文档上,可以了解到,IConfigurationRoot是表示 IConfiguration 层次结构的根。

使用IConfigurationRoot.Providers可以得到IEnumerable<IConfigurationProvider>,猜测应该是顺序排列的。

然后反向遍历Providers,读取配置key对应的值,如果存在那应该就是配置的来源了。

让我们验证一下。

Demo

1.读取Providers

创建WebApplication1,修改Startup.cs,代码如下:

public Startup(IConfiguration configuration)
{
    Configuration = (IConfigurationRoot)configuration;
}

public IConfigurationRoot Configuration { get; }

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ......

    app.UseEndpoints(endpoints =>
    {
            endpoints.MapGet("/test", async context =>
            {
                foreach(var provider in Configuration.Providers)
                {
                    await context.Response.WriteAsync(provider.ToString());
                    await context.Response.WriteAsync("\\r\\n");
                }
            });
    });
    
    ......
}

从下图看到,顺序应该是正确的:

2.读取配置值

继续修改Startup.cs,代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ......

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGet("/test2/{key:alpha}", async context =>
        {
            var key = context.Request.RouteValues["key"].ToString();
            foreach (var provider in Configuration.Providers.Reverse())
            {
                if (provider.TryGet(key, out string value))
                {
                    await context.Response.WriteAsync(provider.ToString());
                    await context.Response.WriteAsync("\\r\\n");
                    await context.Response.WriteAsync(value);
                    break;
                }
            }
        });
    });
    
    ......
}

运行后查找AllowedHosts配置,返回结果正确。

修改环境变量后 

再次查找AllowedHosts配置,返回结果正确。

结论

现在,如果还有同事问你,数据库连接串的值和appsettings.json配的不一样,相信你可以回答的出来了吧!

欢迎关注我的个人公众号”My IO“

以上是关于VB 下面程序中的 vData是啥意思或者从哪来 程序里面没有个他赋值或定义的主要内容,如果未能解决你的问题,请参考以下文章

晕了!这个配置值从哪来的?

VB中,Datafield是啥意思?

关于VB中的括号是啥意思?

vb中flag是啥意思有啥作用

VB: ByVal是啥意思

python中pip命令安装的源文件从哪来的?