Comments (5)
If it doesn't hurt size/perf (which it shouldn't with inlining), C# conventions are to never expose public fields. What do you think of get-only properties (and sometimes primary constructors) from C# 6.0? The syntax looks like:
struct LocalDefinition (TypeDesc type, bool isPinned) // constructor parameters go next to the struct delcaration
{
public int SomeReadOnlyInt { get; } = Math.Max(3, 4); // Can do some logic here
public TypeDesc Type { get; } = type; // Can read constructor parameters here
public bool IsPinned { get; } = isPinned;
}
from corert.
That C# 6 syntax is disgusting.
Although I do admit that in this case it has a nice side effect of making something that becomes de facto read only.
Not sure if we build with Roslyn on OSX and Linux though.
from corert.
FYI, the primary constructors feature was cut from C# 6
from corert.
C# conventions are to never expose public fields
This convention is for public types in frameworks. It was invented so that the type implementation can change without breaking the framework public surface.
The type system is not designed to be public framework. It is our internal implementation detail. We do not need to follow the guidelines for public frameworks in the implementation. We should prefer concise tight code instead - that the guidelines for public frameworks are often in conflict with.
from corert.
I'd also prefer public read-only fields.
from corert.
Related Issues (20)
- Wasm: munmap possible problem HOT 18
- Thread priorities on Unix HOT 3
- FlushProcessWriteBuffers on ARM64 HOT 3
- Unhandled Exception: ILCompiler.CodeGenerationFailedException: Code generation failed for method HOT 2
- Missing implementation of System.OperatingSystem.IsWindows HOT 2
- Question: ImportConvert unsigned parameter is always false HOT 1
- Wasm: conv_r_un/4 should set to postive or negative infinity when too large
- CoreRT slower then regular .NET HOT 3
- "Segmentation fault" on CentOS 7.8 HOT 2
- "The input line is too long" during build HOT 4
- Generating native code with Grpc.Core HOT 3
- What's the difference between corert and runtimelab‘s NativeAOT ? HOT 2
- Error on tests/runtest.sh -coreclr All HOT 3
- Ubuntu 20.04 dotnet publish failed HOT 2
- Question about Marshalling of data structures across C++/C# HOT 2
- This repo is going to be archived on October 31, 2020 HOT 16
- GitHub actions - clang fails on Ubuntu HOT 2
- Great Project HOT 1
- Fails to dotnet publish. HOT 1
- how run it on openwrt arm v7?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from corert.