GVKun编程网logo

如何在C#中创建公共const大小?(c#怎么定义公共变量)

5

本文将分享如何在C#中创建公共const大小?的详细内容,并且还将对c#怎么定义公共变量进行详尽解释,此外,我们还将为大家带来关于android–如何在ContactsContract中创建用户配置文

本文将分享如何在C#中创建公共const大小?的详细内容,并且还将对c#怎么定义公共变量进行详尽解释,此外,我们还将为大家带来关于android – 如何在ContactsContract中创建用户配置文件?、android – 如何在Corona SDK中创建加载屏幕?、asp.net – 如何在C#中获取特定文件夹的总大小?、c – 通过公共const指针封装是个好主意吗?的相关知识,希望对你有所帮助。

本文目录一览:

如何在C#中创建公共const大小?(c#怎么定义公共变量)

如何在C#中创建公共const大小?(c#怎么定义公共变量)

我正在尝试编写以下代码:

public const Size ImageSize = new Size() { Width = 28,Height = 28 };

但我得到宽度和高度是只读的错误.

建议的方法是什么?

解决方法

const仅限于编译器可以直接写为IL的原语.如果将Size视为不可变的,那么readonly就足够了

public static readonly Size ImageSize = new Size(28,28);

请注意,如果Size是一个可变结构,可能会发生不好的事情;我会推荐一个属性而不是一个字段来防止一些令人困惑的副作用.

android – 如何在ContactsContract中创建用户配置文件?

android – 如何在ContactsContract中创建用户配置文件?

我正在尝试在ContactsContract中创建一个用户配置文件…因为没有一个,我需要一个用于测试.我没有真实的Android设备,只有AVD模拟器进行测试.

这是我正在使用的代码块:

ArrayListedname.CONTENT_ITEM_TYPE)
    .withValue(Structuredname.disPLAY_NAME,name)
    .build());

this.getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);

如果删除用于使此条目成为用户配置文件的行,则它可以正常工作(即,将插入名称).但是,我无法弄清楚如何使用IS_USER_PROFILE标志设置条目.

您可以从应用程序创建用户配置文件吗?如果是这样,任何关于为什么这不起作用的想法?

非常感谢!
斯科特

最佳答案
@ozmank提供了一个很好的指针 – 考虑从针对API级别15-23的应用程序添加更新的工作示例

我在三星设备上遇到了这个问题 – 配置文件不存在,可以在存在时删除.

>为WRITE_PROFILE添加到AndroidManifest.xml使用权限

>创建属于配置文件的空原始联系人 – 这将生成配置文件条目

ContentValues values = new ContentValues();            
context.getContentResolver().insert(Profile.CONTENT_RAW_CONTACTS_URI,values);

从返回的Uri,您可以查询原始联系人条目.

注意 – 这不会向配置文件添加信息,因此如果您将使用查询信息的配置文件

Uri uri = Uri.withAppendedpath(Profile.CONTENT_URI,Contacts.Data.CONTENT_DIRECTORY);
Cursor cursor = context.getContentResolver().query(uri,null,null);

结果光标将为空,也许如果您决定再次在#2中运行代码并进入股票联系人应用程序,您将在Me配置文件下看到多个空条目 – 所以我的建议是将我的个人资料保留为尽可能清洁并跟踪您创建的原始联系人并检查它是否仍然有效 – 在创建新的原始联系人之前.

Uri uri = Uri.withAppendedpath(Profile.CONTENT_RAW_CONTACTS_URI,String.valueOf(lastLocalProfileManualRawId));
Cursor cursor = context.getContentResolver().query(uri,null);

if (cursor != null && cursor.getCount() > 0){
    // The profile exists
} else {
    // Create a new raw contact
}

android – 如何在Corona SDK中创建加载屏幕?

android – 如何在Corona SDK中创建加载屏幕?

我的游戏是高清,我使用了很多高清图像和精灵表,占用了大量的纹理内存.结果是,在我的场景加载之前,我得到了一个丑陋的黑色屏幕,持续了几秒钟.所以我想制作一个加载屏幕.其实两个.一个用于我的主菜单,一个用于我的主游戏.我整天搜索了很多,但我没有找到任何制作加载屏幕的步骤.

我想做的事:

– 有一个加载屏幕,只有一个文本说“加载…”和另一个文本,其中百分比计算我的下一个屏幕资产加载了多少.

– 我完成后,我想删除我的加载屏幕,并开始我的主菜单场景,或我的主要游戏场景,没有延迟.

我正在为Android开发,但欢迎任何关于iPhone的评论.

故事板如何知道我的场景跟踪是否加载以及百分比是多少?我应该把我的newImageRects放在哪里?我找不到一个教程.

解决方法

在你的main.lua中,你应该创建一个函数loadalimages(),你将在其中加载所有的高清图像和spritesheets.
local loadingText = display.newText("LOADING ...",native.systemFont,24)
myText:setTextColor(255,255,255)

local function loadalimages()
    --create all your images here.

    --remove LOADING text
end

--if you still see black screen at the start try to increase delay > 500 ms  
timer.performWithDelay( 500,loadalimages,1 )

现在,如果您想显示和更新另一个文本,其中包含计算下一个屏幕资源加载量的百分比,您应该创建图像,精灵为.isVisible = false,当它们全部创建时更改.isVisible = true.
您可以在创建一些图像后添加一些更新文本百分比的代码.

local loadingText = display.newText("LOADING ...",255)

local function loadalimages()
    --create some images here.
    --update text's percentage to 20%
    --create some images here.
    --update text's percentage to 50%
    --create some sprites here.
    --update text's percentage to 90%
    --change **.isVisible=true** for all your created files but **.alpha=0**
    --update text's percentage to 100%
    --remove LOADING text
    --transition .alpha of all images to 1
end

timer.performWithDelay( 500,1 )

我认为您可以将所有图像文件放在一个显示组中,并在此组中设置.isVisible = false.这将为您节省一些代码行. .alpha = 0也是如此

有很多方法.您可以声明变量然后在loadalimages()函数中创建它们,或者您可以将它们全部放在表中并使用该表来获取所需的图像.
第一个例子:

local image

local function loadalimages()
    --create some images here.

    image = display.newImageRect( "image.png",100,100 )
    image:setReferencePoint( display.CenterReferencePoint )
    image.x = display.contentCenterX
    image.y = display.contentCenterY

    --create some sprites here.
end

表格示例:

local imagesTable = { }

local function loadalimages()
    --create some images here.

    local image = display.newImageRect( "image.png",100 )
    image:setReferencePoint( display.CenterReferencePoint )
    image.x = display.contentCenterX
    image.y = display.contentCenterY
    imagesTable.image = image

    --create some sprites here.
end

更多信息:
http://lua-users.org/wiki/ScopeTutorial
http://www.coronalabs.com/blog/2011/06/21/understanding-lua-tables-in-corona-sdk/
http://lua-users.org/wiki/TablesTutorial

asp.net – 如何在C#中获取特定文件夹的总大小?

asp.net – 如何在C#中获取特定文件夹的总大小?

我正在创建一个应用程序,我给用户提供了一些内存空间,我想要的
计算他在文件夹中使用的总空间,并向他/她显示所使用的总空间和可以使用的总剩余空间.
如何计算整个文件夹的大小,包括c#中特定文件夹的所有文件.

解决方法

您可以使用以下函数来计算特定文件夹的大小.

资料来源:https://askgif.com/blog/144/how-can-i-get-the-total-size-of-a-particular-folder-in-c/

static String GetDriveSize(String ParticularFolder,String drive)
    {
        String size = "";
        long MaxSpace = 10485760;
        String rootfoldersize = @"~/userspace/" + ParticularFolder+ "/";
        long totalbytes = 0;
        long percentageusage = 0;

        totalbytes = GetFolderSize(System.Web.HttpContext.Current.Server.MapPath(rootfoldersize) + "" + drive + "/");
        percentageusage = (totalbytes * 100) / MaxSpace;
        size = BytesToString(totalbytes);

        return size;
    }

static long GetFolderSize(string s)
    {
        string[] fileNames = Directory.GetFiles(s,"*.*");
        long size = 0;

        // Calculate total size by looping through files in the folder and totalling their sizes
        foreach (string name in fileNames)
        {
            // length of each file.
            FileInfo details = new FileInfo(name);
            size += details.Length;
        }
        return size;
    }

static String BytesToString(long byteCount)
    {
        string[] suf = { "B","KB","MB","GB","TB","PB","EB" }; //Longs run out around EB
        if (byteCount == 0)
            return "0" + suf[0];
        long bytes = Math.Abs(byteCount);
        int place = Convert.ToInt32(Math.Floor(Math.Log(bytes,1024)));
        double num = Math.Round(bytes / Math.Pow(1024,place),1);
        return (Math.Sign(byteCount) * num).ToString() + suf[place];
    }

希望这会帮助你.

c – 通过公共const指针封装是个好主意吗?

c – 通过公共const指针封装是个好主意吗?

所以这就是我所知道的:

>明智的做法是不要直接在您的API中暴露您的ivars;相反,使用访问器
>指向非const对象的const指针只是意味着您可以更改对象,但不能重定向指针指向的位置

这是我的情况:

我有一些相关的课程.我想创建一个简单的类,通过组合,将它们组合成一个逻辑接口.我的每个封闭类在其API中都有公共和私有区别,因此我不介意将它们直接暴露给我父类的用户.这意味着我为这些ivars编写访问器对我来说太过分了,因为类已经管理了什么是公共的,什么不是.但是,我不希望用户更改包含在此组合父类中的实际对象.

所以我能想到的唯一方法就是使用这些对象的const指针,如下:

class Parent{  public:   EnclosedClass1*const ec1; //users can enjoy the public API of EnclosedClass   EnclosedClass2*const ec2;   void convenienceMethod(){         //performs inter-related functions on both ec1 and ec2    } }

这样,让某人直接与ec1和ec2的API接口是没有害处的,但是,我想确保这是相当万无一失的,因为至少那个人不能改变被操纵的实际资源,因此是const指针.

这是否有意义,是否很好地使用了const指针?

或者,我可以将它们完全保密,忘记指针(无论如何这个类管理这些对象),并且只需要为这些对象中包含的公共函数编写访问器.但这似乎有点矫枉过正了吧?

解决方法

传统的OOP方式是保持数据私有,如果想要在类之外使用它们,则拥有公共访问器.

如果您不希望修改私有数据指针,那么您不提供setter,只提供getter.

class Parent{  private:       EnclosedClass1*const ec1;       EnclosedClass2*const ec2;  public:      EnclosedClass1* getEnclosedClass1() const {...};      EnclosedClass2* getEnclosedClass2() const {...};          void convenienceMethod(){    }

}

另一种可能性(如@pmr在下面的评论中提出的)是:

const EnclosedClass1& getEnclosedClass1() const {...};const EnclosedClass2& getEnclosedClass2() const {...};

使用const引用可以保护用户不会测试getter返回的值.但是你必须确保你的对象状态是一致的,并且永远不会有指向nullptr的内部指针;在这种情况下,你应该抛出异常.

今天关于如何在C#中创建公共const大小?c#怎么定义公共变量的介绍到此结束,谢谢您的阅读,有关android – 如何在ContactsContract中创建用户配置文件?、android – 如何在Corona SDK中创建加载屏幕?、asp.net – 如何在C#中获取特定文件夹的总大小?、c – 通过公共const指针封装是个好主意吗?等更多相关知识的信息可以在本站进行查询。

本文标签: