Skip to Content
C# 3.0 Cookbook, 3rd Edition
book

C# 3.0 Cookbook, 3rd Edition

by Jay Hilyard, Stephen Teilhet
December 2007
Intermediate to advanced
896 pages
19h 57m
English
O'Reilly Media, Inc.
Content preview from C# 3.0 Cookbook, 3rd Edition

3.14. Initializing a Constant Field at Runtime

Problem

A field marked as const can be initialized only at compile time. You need to initialize a field to a valid value at runtime, not at compile time. This field must then act as if it were a constant field for the rest of the application's life.

Solution

You have two choices when declaring a constant value in your code. You can use a readonly field or a const field. Each has its own strengths and weaknesses. However, if you need to initialize a constant field at runtime, you must use a readonly field:

	    public class Foo
	    {
	        public readonly int bar;

	        public Foo( ) {}

	        public Foo(int constInitValue)
	        {
	            bar = constInitValue;
	        }

	        // Rest of class...
	    }

This is not possible using a const field. A const field can be initialized only at compile time:

	    public class Foo
	    {
	        public const int bar;        // This line causes a compile-time error.

	        public Foo( ) {}

	        public Foo(int constInitValue)
	        {
	            bar = constInitValue;    // This line also causes a compile-time error.
	        }
	        // Rest of class...
	    }

Discussion

A readonly field allows initialization to take place only in the constructor at runtime, whereas a const field must be initialized at compile time. Therefore, implementing a readonly field is the only way to allow a field that must be constant to be initialized at runtime.

There are only two ways to initialize a readonly field. The first is by adding an initializer to the field itself:

	    public readonly int bar = 100;

The second way is to initialize the readonly field through ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

C# 6.0 Cookbook, 4th Edition

C# 6.0 Cookbook, 4th Edition

Stephen Teilhet, Jay Hilyard
C# Cookbook

C# Cookbook

Joe Mayo
C# Cookbook

C# Cookbook

Stephen Teilhet, Jay Hilyard

Publisher Resources

ISBN: 9780596516109Errata Page